美文网首页
mysql 命令

mysql 命令

作者: 蕊er | 来源:发表于2017-10-10 09:34 被阅读0次

    查看mysql字符集

    show variables like 'character%'

    数据库启动与停止

    net start mysql

    net stop mysql

    登陆

    mysql -u用户名 -p密码 

    数据库操作

    创建数据库:create database 数据库名称 character set utf8;

    数据库删除:drop database 数据库名称

    显示数据库:show databases;

    查看某个数据库定义信息:show create database 数据库名称;

    切换数据库:use 数据库名称;

    查看当前使用的数据库:select database();

    表操作

    创建表:create table 表名称(

                      字段名称    字段类型(长度) 约束,

                      字段名称    字段类型(长度) 约束......

                   ) character set utf8;

    删除表:drop table 表名称;

    表结构操作

          添加列:alter table 表名 add 字段名称 字段类型(长度) 约束;

          修改列的类型,长度,约束:alter table 表名 modify 字段名称 字段类型(长度) 约束;

          修改列名,类型,长度,约束:alter table 表名 change 旧列名 新列名 字段类型(长度) 约束;

          删除列:alter table 表名 drop 列名;

    修改表名:rename table 旧表名  to 新表明

    更改表的字符集:alter table 表名 character set utf8;

    查询数据库表show tables;

    查看某个表信息:desc 表名;

    创建外键:alter table 从表 add constraint 外键名称 foreign key(从表外键字段名)references 主表(主表的主键);

    删除外键:alter table 从表 drop foreign key 外键名称

    外键级联操作类型

                restrict(限制):默认值,抛异常,如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

                cascade(级联):如果主表的记录删掉,则从表中相关联的记录都将被删除,在父表上update/delete记录时,同步update/delete掉子表的匹配记录

                 set null:将外键设置为空,在父表上update/delete记录时,将子表上匹配记录的列设为null,要注意子表的外键列不能为not null

                 no action:什么都不做

          创建外键时遇到的问题: 1.关联的外键为not null ,外键删除时和更新时选择的 SET NULL;解决选择cascade;2.创建外键时,该表已经存在数据,错误:1452。解决方法:1)删除数据;2)在外键表中添加对应的项,再添加外键

    表内容操作

    插入:insert into 表名 values(值1,值2,值3......);

               insert into 表名 (列1,列2,列3......) values (值1,值2,值3......);

    更新:update 表名 set 字段名=值,字段名=值......where 条件

    删除:delete from 表名 where 条件

                truncate table 表名;

        区别:delete:一条一条删除,不清空auto_increment记录条数,删除的数据在一个事务中可       以找回,truncate:直接将表删除,重新建表,auto_increment将置为空,从零开始,删除的     数据找不回来

    查询

          select [distinct] * |列名 from 表 where 条件 group by 分组字段 having 分组条件 order by 排序字段 asc|desc limit star,count;

          distinct:去重

          like:_代表一个字符,%代表任意个字符

          in:在某个范围内获得值in(set)

          between ... and ...:显示在某一个的值(含头含尾)

          is null:判断是否为空

          is not null:判非空

          and:多个条件同时成立

          or:多个条件任意成立

          not:不成立

         排序:asc,desc

         聚合:avg(),sum(),min(),max(),count()

         分组:group by

         对比where与having:

          where是对from后面指定的表进行数据筛选,属于对原始数据的筛选,having是对group               by的结果进行筛选

          连接查询

          参考:http://www.cnblogs.com/logon/p/3748020.html

                          http://www.cnblogs.com/pcjim/articles/799302.html

          inner join(等值连接):只返回两个表中联结字段相等的行;

          left [outer] join(左联接):返回包括左表中的所有记录和右表中联结字段相等的记录;

          right [outer] join(右联接):返回包括右表中的所有记录和左表中联结字段相等的记录

    视图--视图本质就是对查询的一个封装

    定义视图

    create view stuscore as

    select students.*,scores.score from scores

    inner join students on scores.stuid=students.id;

    视图的用途就是查询

    select * from stuscore;

    事务

    事务语句

    开启:begin;

    提交:commit;

    回滚:rollback;

    建表原则

    一对多关系:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

    多对多关系:两张表都是主表,新建第三张表作为从表,提供两个字段,都是外键

    一对一关系

    内置函数

    字符串函数

    查看字符的ascii码值,ascii(str),str是空串时返回0

    select ascii('a');

    查看ascii码值对应的字符,char(数字)

    select char(97);

    拼接字符串,concat(str1,str2...)

    select concat(12,34,'ab');

    包含字符个数,length(str)

    select length('abc');

    截取字符串

    left(str,len),返回字符串str的左端len个字符

    right(str,len),返回字符串str的右端len个字符

    substring(str,pos,len),返回字符串str的位置pos起len个字符

    select substring('abc123',2,3);

    去除空格

    ltrim(str)返回删除了左空格的字符串str

    rtrim(str)返回删除了右空格的字符串str

    trim([方向] from str)返回从某侧删除remstr后的字符串str,方向词包括both、leading、trailing,表示两侧、左、右

    select trim('  bar  ');

    select trim(leading 'x' FROM 'xxxbarxxx');

    select trim(both 'x' FROM 'xxxbarxxx');

    select trim(trailing 'x' FROM 'xxxbarxxx');

    返回由n个空格字符组成的一个字符串,space(n)

    select space(10);

    替换字符串,replace(str,from_str,to_str)

    select replace('abc123','123','def');

    大小写转换,函数如下

    lower(str)

    upper(str)

    select lower('aBcD');

    数学函数

    求绝对值abs(n)

    select abs(-32);

    求m除以n的余数mod(m,n),同运算符%

    select mod(10,3);

    地板floor(n),表示不大于n的最大整数

    select floor(2.3);

    天花板ceiling(n),表示不小于n的最大整数

    select ceiling(2.3);

    求四舍五入值round(n,d),n表示原数,d表示小数位置,默认为0

    select round(1.6);

    求x的y次幂pow(x,y)

    select pow(2,3);

    获取圆周率PI()

    select PI();

    随机数rand(),值为0-1.0的浮点数

    select rand();

    日期与时间

    获取子值,语法如下:

    year(date)返回date的年份(范围在1000到9999)

    month(date)返回date中的月份数值

    day(date)返回date中的日期数值

    hour(time)返回time的小时数(范围是0到23)

    minute(time)返回time的分钟数(范围是0到59)

    second(time)返回time的秒数(范围是0到59)

    select year('2016-12-21');

    日期计算,使用+-运算符,数字后面的关键字为year、month、day、hour、minute、second

    select '2016-12-21'+interval 1 day;

    日期格式化date_format(date,format),format参数可用的值如下:

    获取年%Y,返回4位的整数

    获取年%y,返回2位的整数

    获取月%m,值为1-12的整数

    获取日%d,返回整数

    获取时%H,值为0-23的整数

    获取时%h,值为1-12的整数

    获取分%i,值为0-59的整数

    获取秒%s,值为0-59的整数

    select date_format('2016-12-21','%Y %m %d');

    当前日期current_date()

    select current_date();

    当前时间current_time()

    select current_time();

    当前日期时间now()

    select now();

    查询例子

    select * from category,products where cid=category_id;

    select * from category c,products p where c.cid=p.category_id;

    select cname from category c,products p where c.cid=p.category_id;

    select distinct cname from category c,products p where c.cid=p.category_id;

    select distinct cname from category c inner join products p on c.cid=p.category_id;

    select * from category c left outer join products p on c.cid=p,category_id;

    select cname,count(category_id) from category c left outer join products p on c.cid=p.category_id group by cname;

    select p.* from products p,category c where p.category_id=c.cid and c.cname="化妆品";

    select * from products where category_id=(select cid from category where cname="化妆品");

    相关文章

      网友评论

          本文标题:mysql 命令

          本文链接:https://www.haomeiwen.com/subject/gsrpyxtx.html