----命令行连接MySql---------

  • 栏目:数据 时间:2020-04-20 10:30
<返回列表

mssql 字符串的拼接(join)与切分(split)

select * from emp;
注释#---------------------------#----命令行连接MySql---------
启动mysql服务器net start mysql
关闭 net stop mysql #进入mysql -h 主机地址 -u 用户名 -p 用户密码
退出exit
---------------------------#----MySql用户管理---------
修改密码:首先在DOS 下进入mysql安装路径的bin目录下,然后键入以下命令:mysqladmin -uroot -p123 password 456;
增加用户#格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by '密码'/如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令: grant select,insert,update,delete on . to user1@localhost Identified by "password1"; 如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。 如果你不想user1有密码,可以再打一个命令将密码去掉。 grant select,insert,update,delete on mydb. to user1@localhost identified by ""; /
grant all privileges on wpj1105.
to sunxiao@localhost identified by '123'; #all privileges 所有权限
----------------------------#-----MySql数据库操作基础-----
显示数据库show databases;
判断是否存在数据库wpj1105,有的话先删除drop database if exists wpj1105;
创建数据库create database wpj1105;
删除数据库drop database wpj1105;
使用该数据库use wpj1105;
显示数据库中的表show tables;
先判断表是否存在,存在先删除drop table if exists student;
创建表create table student(id int auto_increment primary key,name varchar(50),sex varchar(20),date varchar(50),content varchar(100))default charset=utf8;
删除表drop table student;
查看表的结构describe student; #可以简写为desc student;
插入数据insert into student values(null,'aa','男','1988-10-2','......');insert into student values(null,'bb','女','1889-03-6','......');insert into student values(null,'cc','男','1889-08-8','......');insert into student values(null,'dd','女','1889-12-8','......');insert into student values(null,'ee','女','1889-09-6','......');insert into student values(null,'ff','null','1889-09-6','......');#查询表中的数据select * from student;select id,name from student;
修改某一条数据update student set sex='男' where id=4;
删除数据delete from student where id=5;
and 且select * from student where date>'1988-1-2' and date<'1988-12-1';
or 或select * from student where date<'1988-11-2' or date>'1988-12-1'; #betweenselect * from student where date between '1988-1-2' and '1988-12-1';
in 查询制定集合内的数据select * from student where id in (1,3,5);
排序 asc 升序 desc 降序select * from student order by id asc;
分组查询 #聚合函数 select max(id),name,sex from student group by sex;
select min(date) from student;
select avg(id) as '求平均' from student;
select count() from student; #统计表中总数
select count(sex) from student; #统计表中性别总数 若有一条数据中sex为空的话,就不予以统计~
select sum(id) from student;
查询第i条以后到第j条的数据(不包括第i条)select
from student limit 2,5; #显示3-5条数据
巩固练习create table c( id int primary key auto_increment, name varchar(10) not null, sex varchar(50) , #DEFAULT '男' , age int unsigned, #不能为负值(如为负值 则默认为0) sno int unique #不可重复);
drop table c;desc c;
insert into c (id,name,sex,age,sno) values (null,'涛哥','男',68,1);insert into c (id,name,sex,age,sno) values (null,'aa','男',68,2);insert into c (id,name,sex,age,sno) values (null,'平平','男',35,3);...
select * from c;
修改数据 update c set age=66 where id=2;update c set name='花花',age=21,sex='女' where id=2delete from c where age=21;
常用查询语句select name,age ,id from cselect * from c where age>40 and age<60; #andselect * from c where age<40 or age<60; #orselect * from c where age between 40 and 60 #betweenselect * from c where age in (30,48,68,99); #in 查询指定集合内的数据select * from c order by age desc; order by (asc升序 des降序)
分组查询select name,max(age) from c group by sex; #按性别分组查年龄最大值#聚合函数select min(age) from c;select avg(age) as '平均年龄 ' from c;select count() from c; #统计表中数据总数select sum(age) from c;
修改表的名字#格式:alter table tbl_name rename to new_namealter table c rename to a; #表结构修改create table test(id int not null auto_increment primary key, #设定主键name varchar(20) not null default 'NoName', #设定默认值department_id int not null,position_id int not null,unique (department_id,position_id) #设定唯一值);
修改表的名字#格式:alter table tbl_name rename to new_namealter table test rename to test_rename;
向表中增加一个字段(列)#格式:alter table tablename add columnname type;/alter table tablename add(columnname type);alter table test add columnname varchar(20);
修改表中某个字段的名字alter table tablename change columnname newcolumnname type; #修改一个表的字段名alter table test change name uname varchar(50);
select
from test;
表position 增加列testalter table position add(test char(10));#表position 修改列testalter table position modify test char(20) not null;#表position 修改列test 默认值alter table position alter test set default 'system';#表position 去掉test 默认值alter table position alter test drop default;#表position 去掉列testalter table position drop column test;#表depart_pos 删除主键alter table depart_pos drop primary key;#表depart_pos 增加主键alter table depart_pos add primary key PK_depart_pos(department_id,position_id);
用文本方式将数据装入数据库表中(例如D:/mysql.txt)load data local infile "D:/mysql.txt" into table MYTABLE;
导入.sql文件命令(例如D:/mysql.sql)source d:/mysql.sql; #或者 /. d:/mysql.sql;

经常有高手使用select number from master..spt_values where type = 'p',这是很妙的方法;但这样只有2048个数字,而且语句太长,不够方便。

总之,一个数字辅助表,你值得拥有。

  1. 日历表有用指数:★★★☆☆

《sql编程风格》一书建议一个企业的数据库教程应该创建一个日历表:sql codecreate table calendar( date datetime not null primary key clustered, weeknum int not null, weekday int not null, weekday_desc nchar(3) not null, is_workday bit not null, is_weekend bit not null)gowith cte1 as( select date = dateadd(day,n,'19991231') from nums where n = datediff(day,'19991231','20201231')),cte2 as( select date, weeknum = datepart(week,date), weekday = (datepart(weekday,date) + @@datefirst - 1) % 7, weekday_desc = datename(weekday,date) from cte1)--insert into calendarselect date, weeknum, weekday, weekday_desc, is_workday = case when weekday in (0,6) then 0 else 1 end, is_weekend = case when weekday in (0,6) then 1 else 0 endfrom cte2

这个表可以很容易根据第1条的数字辅助表生成出来。如果经常需要进行日期处理的话,或许会需要这个表。

还可以在这个表中包含一些企业关心的特殊日期,比如开盘日休市日、特殊纪念日和节日、重要员工的生日,等等。这些日期往往是很难计算的,比如中国的法定节假日。

  1. 字符串的拼接(join)与切分(split)有用指数:★★★★★

这个问题非常常见!开发中经常需要把一组值以逗号分隔拼接在一个字符串,或是反过来把一个逗号分隔的字符串切分成一组值。用ss2005对xml的支持可以非常方便地实现这个功能。

单变量的拼接与切分:sql code--将一组查询结果按指定分隔符拼接到一个变量中

declare @datebases varchar(max)set @datebases = stuff(( select ','+name from sys.databases order by name for xml path('')),1,1,'')select @datebases--将传入的一个参数按指定分隔符切分到一个表中declare @sourceids varchar(max)set @sourceids = 'a,bcd,123,+-*/=,xy,key'select v = x.n.value('.','varchar(10)')from ( select valuesxml = cast('root' + replace((select v = @sourceids for xml path('')),',','/vv') + '/root' as xml)) tcross apply t.valuesxml.nodes('/root/v') x(n)

批量的拼接与切分:sql code--测试数据:create table #tojoin( tablename varchar(20) not null, columnname varchar(20) not null, primary key clustered(tablename,columnname))gocreate table #tosplit( tablename varchar(20) not null primary key clustered, columnnames varchar(max) not null)goinsert into #tojoin values('tblemployee','employeecode')insert into #tojoin values('tblemployee','employeename')insert into #tojoin values('tblemployee','hiredate')insert into #tojoin values('tblemployee','jobcode')insert into #tojoin values('tblemployee','reporttocode')insert into #tojoin values('tbljob','jobcode')insert into #tojoin values('tbljob','jobtitle')insert into #tojoin values('tbljob','joblevel')insert into #tojoin values('tbljob','departmentcode')insert into #tojoin values('tbldepartment','departmentcode')insert into #tojoin values('tbldepartment','departmentname')goinsert into #tosplit values('tbldepartment','departmentcode,departmentname')insert into #tosplit values('tblemployee','employeecode,employeename,hiredate,jobcode,reporttocode')insert into #tosplit values('tbljob','departmentcode,jobcode,joblevel,jobtitle')go

--拼接(join),sql server 2005的for xml扩展可以将一个列表转成一个字串:select t.tablename, columnnames = stuff( (select ',' + c.columnname from #tojoin c where c.tablename = t.tablename for xml path('')), 1,1,'')from #tojoin tgroup by t.tablename

--切分(split),使用sql server 2005对xquery的支持:select t.tablename, columnname = c.columnname.value('.','varchar(20)')from ( select tablename, columnnamesxml = cast('root' + replace((select columnname = columnnames for xml path('')),',','/columnnamecolumnname') + '/root' as xml) from #tosplit) tcross apply t.columnnamesxml.nodes('/root/columnname') c(columnname)

需要注意的是,倘若分隔符为;或者字符串值中包含xml特殊字符,以上方法可能会无法处理。

上一篇:定义sn+sex为唯一键,等操作有需要了解的朋友可以看看 下一篇:没有了

更多阅读

----命令行连接MySql---------

数据 2020-04-20
mssql 字符串的拼接(join)与切分(split) select * from emp; 注释#---------------------------#----命令行连接M...
查看全文

定义sn+sex为唯一键,等操作有需要了解的

数据 2020-04-18
文章收藏了大量的关于sql常用语句了,大多都是基于数据查询,修改,删除,等操作有需要了...
查看全文

当运行一个执行字符串的模块时

数据 2020-04-18
执行 Transact-SQL批中的命令字符串、字符串或执行下列模块之一:系统存储过程、用户定义存储...
查看全文

友情链接: 网站地图

Copyright © 2015-2019 http://www.koi-bumi.com. 韦德体育有限公司 版权所有