sql语句

DDL和DML的区别

  • DML
    DML(data manipulation language)数据操纵语言:
        就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作
  • DDL
    DDL(data definition language)数据库定义语言:
        其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上

连接方式(命令行输入)

  • 本地连接:mysql -uroot -p(回车后,输入命令)
  • 远程连接:mysql -h(IP地址) -uroot -p(密码) -P(端口)

对数据库进行操作的命令

(每个命令输入完必须添加 “;”,回车后才能执行)

  • 查看数据库-------------------------show databases
  • 创建数据库-------------------------create database 数据库名
  • 选择对指定的数据库进行操作----use 数据库名
  • 查看当前数据库--------------------select database()
  • 设置数据库的字符集---------------alter database 数据库名 character set 字符集
  • 删除数据库--------------------------drop database 数据库名

对表中的列进行相关操作

  • 创建表

    • 第一种方法
      create table stu(
      id int primary key not null auto_increment,
      name varchar(25) not null,
      sex enum(‘M’,‘F’) default ‘M’,
      age int(2) default 19,
      );
    • 第二种方法
      create table stu2 like stu;(stu2和stu具有一样的表结构,但stu2没有stu的数据)
    • 第三种方法
      createtable stu3 select id,name,age,from stu1;(stu3和stu具有相同的数据,但某些列的属性会出丢失,如主键、外键、自增长等)
  • 查看标的结构----------------------desc 表名

  • 查看当前数据库中有多少表------show tables

  • 对表的属性(列)进行修改

    • 增加列-------------------------alter table 表名 add 列名 列的相关信息 [after 列名/first](方括号的内容可写可不写,用于确定增加列的位置)
    • 修改列的属性-----------------alter table 表名 modify 列名 修改后的列信息 [after 列名/first]
    • 改变列的名字-----------------alter table 表名 change 旧列名 新列名 [after 列名/first]
    • 删除列:-----------------------alter table 表名 列名
    • 修改表的名字------------------alter table 表名 rename to 新的表名

对表中的记录进行操作

  • 插入数据
    insert into stu0(sname,email,sex) values(‘lisi’,‘lisi@163.com’,‘M’);
    insert into stu0 values(null,‘wangwu’,‘sss@qq.com’,‘F’);(对表中所有数据进行操作)
    insert into stu0 set sname=‘zhangsan’,email=“sss@qq.com”;
    insert into stu0(sname,email,sex) select name,birth,sex from stu1;(从其他表导入数据)

  • 修改数据
    update stu0 SET email=‘aaa@qq.com’;(对这一列所有记录进行修改)
    update stu0 SET email=‘bb@qq.com’ where id=4;(对指定记录进行修改)

  • 删除数据
    delete from stu0 where id>3;

  • 投影:部分列组成的新的集合
    select name,sex,age from emp;
    select name as emp_name,sex,age from emp;(将输出的列名name改为emp_name)

  • 选择:部分行组成新的集合
    select * from stu0 where id<10;
    select * from emp where dep_id in(1,2);//id取值空间在1~2

  • 分组
    分组时,select …from 之间只能出现分组的那个字段或统计函数
    select sex,count(*) from emp group by sex;(以sex分组,统计每组的个数)
    select name,sex,avg(age) from emp group by sex;(以sex分组,统计每组记录的年龄平均值)
    select name,sex,sum(age) from emp group by sex;(以sex分组,统计每组记录的年龄和)
    select name,sex,sum(age) as totalage from emp group by sex;(以sex分组,统计每组记录的年龄平均值,列名改为totalage)
    对分组的条件过滤用having而不是where
    select dep_id,count(dep_id) from emp group by dep_id HAVING count(dep_id)>1;
    对统计以后的结果在统计
    select dep_id,count(dep_id) from emp group by dep_id WITH ROLLUP ;

  • 排序
    select * from emp order by age;
    select * from emp order by age desc;(年龄降序)
    select * from emp order by sex asc,age desc;(以性别排序为首,性别相等时,以年龄降序排序)

  • 分页查询
    select * from emp limit 3;//返回从第一条到第三条的数据
    select * from emp limit 3,5;//从结果的第三条开始,向后显示5条

  • 多表查询

select e.id,d.dname as dep_name,e.name,e.sex,e.age from emp e,dep d where e.dep_id=d.id;

  • 连接查询
    * 内连:两边匹配的数据显示
    select e.id,d.dname as dep_name,e.name,e.sex,e.age from emp e INNER JOIN dep d ON
    e.dep_id=d.id;
    * 左外连:左边表都显示,右边没有对应的用 NULL 来填充
    select e.id,d.dname as dep_name,e.name,e.sex,e.age from emp e LEFT JOIN dep d ON e.dep_id=d.id;(emp表中的内容全显示。若dep没有,则用null填)
    * 右外连:和左相反
    select e.id,d.dname as dep_name,e.name,e.sex,e.age from emp e RIGHT JOIN dep d ON
    e.dep_id=d.id;

备份与还原

  • 备份
    Step1:退出 mysql 提示符 \q 回车
    Step2:输入msyqldump -uroot -p 数据库名 > sql文件的路径(如:./sss.sql)

  • 还原

Step1:创建一个新的数据库------------------------Msyql>create database 数据库名;
Step2 还原-------------------------------------------退出 mysql 提示符 \q 回车后,输入mysql -uroot -p xupt<./xupt.sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值