存储数据的仓库及MySql语句

存储数据的仓库

常见数据库分类:  大型数据库  Oracele (多用户 甲骨文 开源 使用免费 服务收费)

                  中型数据库  sqlserver(win)  postgresql(日企) 

                  小型数据库  mysql  (甲骨文  开源免费)

                  微型数据库  sqllilt 

数据库的  库  表  列名 约束名(auto_increment, FOREIGN KEY PRIMARY key UNIQUE `DEFAULT`(默认) not null )  聚合函数(max min avg COUNT)

sql语句分类:

    数据定义语言DDL  对库和表(库表的结构)的操作(create ALTER DROP)

    数据查询语言DQL  模糊 分页查 排序 条件 分组  。。。   

    数据操纵语言DML  对数据的的操作  增 删 改(insert INTO  update DELETE)

    数据控制功能DCL  对数据库的权限 GRANT,REVOKE,COMMIT,ROLLBACK    事务的特性 ACID

DDL语句:

    create database 库名 /表名

    use 库名

    alter 库名 /表名 

    drop 库名/ 表名

    ALTER TABLE 表名称 ADD 字段名 字段约束

    ALTER TABLE 修改前表名称 RENAME 修改后表名称

    //只复制表结构及约束,但不复制数据

    CREATE TABLE 复制出的表 LIKE 原表

    //复制表结构及数据,但不复制约束

    CREATE TABLE 复制出的表 AS SELECT * FROM 原表

    //禁用约束

    ALTER TABLE 表名称 DISABLE KEYS

    //启用约束

    ALTER TABLE 表名称 ENABLE KEYS

      //删除表字段

    ALTER TABLE 表名称 DROP COLUMN 字段名

    //删除主键

    ALTER TABLE 表名称 DROP PRIMARY KEY

    //删除索引

    ALTER TABLE 表名称 DROP INDEX 索引的字段名

    //删除外键约束

    ALTER TABLE 表名称 DROP FOREIGN KEY 外键的字段名

DML语句:

    insert into 表名【(字段名)】 values (字段值)

    insert into 表名 (字段名) values (字段值1),(字段值2),(字段值3).。。。。

    update  表名 set 字段名 = 新字段值  【条件】  如果增加条件语句对应的是修改一条语句  如果没有条件对应的是修改全部数据

    delete 表名  【条件】    不加条件对应是表的中所有数据  如果加上条件删除的是单挑数据

DQL语句:

    单表查

    select 字段名1,字段名2 from 表名

    ORDER BY DESC/ASC

    GROUP BY  字段名

    where  条件

    like  字段名

    HAVING  条件

    limit 0,0

    多表查

    面试题:

    INNER JOIN  内链接

    LEFT JOIN RIGHT JOIN    外连接 {左外联 右外联}

    FULL join    全连接


// DQL语句

  全查

    select * from student

  条件查询

    select * FROM student where id = 1

  根据字段查询

  SELECT sname,sid FROM student

  排序查询

  SELECT sname,age FROM student ORDER BY age asc

  别名查询

  SELECT sname as 姓名 ,age as 年龄 FROM student ORDER BY age asc

  分组查询

  select * from student GROUP BY ssex

  SELECT COUNT(id),ssex as 性别 from student GROUP BY ssex 

  模糊查询 

  以%出现

  select * from student where sname like "%斯%"

  以_的占位符出现

    select * from student where sname like "__斯"

    分组后的条件查询  HAVING 用于分组后的条件查询

    SELECT sname,sid,age from student GROUP BY ssex  HAVING age>80

    分页查询

    select * from student  LIMIT 1,2  (1 代表的是偏移量  从第几条数据开始 2 代表的是每页展示多少数据)

    聚合查询  对应是表的主键  唯一

    select COUNT(id) FROM student  用于做分页的时候用 

    SELECT MAX(age) FROM student

    SELECT MIN(age) FROM student

    SELECT avg(age) FROM student

    多表查询:  2-3 测试的范围

    内连接  innner JOIN

    外连接  left JOIN  RIGHT JOIN 

    select s.sname,s.ssex,s.age,se.cno,se.degree from student as s inner  JOIN score as se  ON s.sid = se.sno

      select s.sname,s.ssex,s.age,se.cno,se.degree from student  s left  JOIN score  se  ON s.sid = se.sno

      select s.sname,s.ssex,s.age,se.cno,se.degree from student as s RIGHT    JOIN score as se  ON s.sid = se.sno

    面试题:

    INNER JOIN 内连接  将两张表的相同的内容进行展示

    LEFT JOIN  左外联  以左边的表为主表从表的内容显示显示字段如果有值显示值如果没有以null填充

    right JOIN  左外联  以右边的表为主表从表的内容显示显示字段如果有值显示值如果没有以null填充

    FULL  join  全链接  将2张表中的所有内容全部显示

    子查询 以()查出来的结果作为条件再次进行查询

      select * from student   

    将年龄最大的名字展示

    select sname from student where age = (SELECT MAX(age) FROM student)

你可能感兴趣的:(存储数据的仓库及MySql语句)