数据库的定义:按照数据结构组织、存储和管理数据的仓库,本身可看作电子化的文件柜
数据库的作用:提供一个存储空间用来存储各种容器,数据库本身不能存储数据,数据只能存储在表中
关系型数据库的4部分(SQL语言):

  • 数据定义语言(DDL):create,alter,drop,…
  • 数据操作语言(DML):insert,update,delete,…
  • 数据查询语言(DQL) : select,…
  • 数据控制语言(DCL) : grant,revoke,commit,rollback,…

数据的类型:

整数类型 tinyint smallint mediunint int bigint
浮点数类型 float double
日期、时间类型 datatime
YYYY-MM-DD
HH: MM: SS
字符串类型 char varchar

1、登录

  • cd\
  • cd C: ……5.6\bin
  • mysql -u root -p
  • 密码设置为root

    2、创建、查看数据库

    数据库为itcast

    1. create databse itcast;
    1. show databses;
    1. show create databse itcast;

    3、修改数据库

    将数据库编码改为gbk

    1. alter database itcast default character set gbk collate gbk_bin;

    4、删除数据库

    1. drop database itcast;

    5、创建数据表

    数据表为tb_grade

    1. create table tb_grade
    2. (
    3. id int(11),
    4. name varchar(20),
    5. grade float
    6. );

    6、查看数据表

    1. show create table tb_grade;
    1. describe tb_grade;
    1. desc tb_grade;

    7、修改数据表

    1)改表名(tb_grade改为grade)

    1. alter table tb_grade rename to grade;

    2)改字段名(name改为username)

    1. alter table grade change name username varchar(20);

    3)改字段数据类型(grade表中的id字段数据类型由int(11)改为int(20))

    1. alter table grade modify id int(20);
    1. alter table grade modify id int primary key;

    4)添加字段(添加无约束条件int类型字段age)

    1. alter table grade add age int(10);

    5)删除字段(age)

    1. alter table grade drop age;

    6)修改字段排列顺序

    1. alter table grade modify username varchar(20) first;
    2. alter table grade modify id int(20) after grade;

    8、删除数据表

    数据表为grade

    1. drop table grade;

    9、主键约束

    主键无重复值、非空
    1)单字段主键(id字段设为主键)

    1. create table grade
    2. (
    3. id primary key,
    4. name varchar(20),
    5. grade float
    6. );

    2)多字段主键(stu_id,course_id设为主键)

    1. create table grade
    2. (
    3. stu_id int,
    4. course_id varchar(20),
    5. stu_grade float,
    6. primary key(stu_id,course_id)
    7. );

    10、非空约束

    id字段设为非空

    1. create table tb_grade
    2. (
    3. id int(11) not null,
    4. name varchar(20),
    5. grade float
    6. );

    11、默认约束

    grade默认字段默认值为0

    1. create table tb_grade
    2. (
    3. id int(11),
    4. name varchar(20),
    5. grade float default 0
    6. );

    12、设置表的字段值自动增加

    id字段设置为自动增加

    1. create table tb_grade
    2. (
    3. id int(11),
    4. name varchar(20),
    5. grade float
    6. );

    13、创建索引

    name字段创建唯一索引、升序

    1. create table tb_grade
    2. (
    3. id int(11),
    4. name varchar(20),
    5. grade float
    6. unique index index_id(name) asc
    7. );

    grade字段创建全文索引、降序

    1. create table tb_grade
    2. (
    3. id int(11),
    4. name varchar(20),
    5. grade float
    6. fulltext index indexname(grade) desc
    7. );

    id字段创建空间索引、升序

    1. create table tb_grade
    2. (
    3. id int(11),
    4. name varchar(20),
    5. grade float
    6. spatial index my_index(id) asc
    7. )engine = myisam;

    创建多列索引

    1. create table tb_grade
    2. (
    3. id int(11),
    4. name varchar(20),
    5. grade float
    6. index my_index(id,name,grade)
    7. );

    14、在已存表上创建索引

    grade表上为字段id创建索引
    方法一:

    1. create unique index index_id on grade (id asc);

    方法二:

    1. alter table grade add unique index index_id(id asc);

    15、删除索引

    方法一:

    1. alter table grade drop index index_id;

    方法二:

    1. drop index index_id on grade;

    16、为表中的字段添加数据

    表studnt添加一条数据

    1. insert into student(id,name,grade)
    2. values(1,'zhangsan',98);

    添加多条数据

    1. insert into student(id,name,grade) values
    2. (2,'xiaoli',67)
    3. (3,'liming',98);

    查看表中数据

    1. select * from student

    17、更新已存在的数据

    更新部分数据

    1. updtate student set name = 'caocao', grade = 50 where id = 1;

    更新全部数据

    1. update student set grade = 80;

    查看表中数据

    1. select * from student

    18、删除数据

    删除部分数据

    1. select * from student where id = 11;
    2. delete from student where id = 11;
    3. select * from student;

    删除全部数据

    1. delete from student;

    19、单表查询

    1)查询指定字段

    1. select id,name,grade,gender from student;

    2)查询所有字段

    1. select * from student;

    20、条件查询

    关系运算符:= >= > <= < != <>表示不等于

    1. select id, name from student where id = 4;

    21、带关键字的查询

    1)关键字in

    1. select id, name from student where id not in(1,2,3);

    2)带关键字between and

    1. select id, name from student where id not between 2 and 5;

    3)带distinct关键字的查询(过滤记录中的重复值)

    1. select distinct name, gender from student;

    4)带like关键字的查询(可包含普通字符串、百分号、下划线的通配符字符串)

  • 查询以”s”开头学生的id

    1. select id,name from student where name like 's%';
  • 查询以”w”开头,”g”结束的name字段值的学生的id

    1. select id,name from student where name like 'w%g';
  • 查询包含”y”的字符串

    1. select id,name from student where name like '%y%';

    5)下划线

    1. select * from student where name like 'wu__gh';

    6)带and关键字的多条件查询(优先级比or高)

    1. select * from student where id in(1,2,3,4) and name like '%ng' and grade<80;

    7)带or关键字的多条件查询

    1. select * from student where id<3 or gender = '女';

    22、空值查询

    1. select id, namegradegender from student where gender is null;
    1. select * from student where gender is null;

    23、高级查询

    1)count(): 统计行数

    1. select count(*) from student;

    2)sum():某字段求和

    1. select sum(grade) from student;

    3)avg():某字段所有值的平均值

    1. select avg(grade) from student;

    4) max():某字段的最大值;
    min():某字段的最小值

    1. select max(grade) from student;

    24、查询结果进行排序

    默认条件为升序,字段值为NULL默认为最小值,先筛选where….,后排序order by……
    having后面可以加聚合函数,而where不行

    1. select * from student order by grade ASC;

    25、group by和聚合函数一起使用

    1. select count(*) as zrs, gender from student group by gender;
    1. select count(*) as zrs, gender from student group by gender having sum(grade)<300;

    26、limit限制查询结果数量

    偏移量为0,相当于(0,4),第一条到第四条记录

    1. select * from student limit 4;

    偏移量为4,相当于(4,4),第五条到第八条记录

    1. select * from student limit 4,4;
    1. select * from student order by grade DESC limit 4,4;

    27、为表或字段取别名

    1. select * from student as s where s.gender='女';
    1. select name as stu_name, gender as stu_gender from;

    28、为表添加外键约束

    关联关系

多对一
一对多
非主键和主键建立关系,外键建在多的一方
主键和非主键建立关系
一对一 两个表的主键是公共字段(从表需要主表存在才有意义)
多对多 非主键和非主键建立关系

grade主表名,student从表名,FK_TD外键名,id主键字段名,gid外键字段名

  1. alter table student add constraint FK_ID foreign key(gid) reference grade(id);

29、删除外键约束

  1. alter table student drop foreign key FK_ID;

30、添加\删除数据

添加数据:先为主表grade添加,后为从表student添加
删除数据:先删从表student,再删主表grade

  1. insert into student(sid,sname,gid) values (1,'王红', 1);
  1. delete from student where sname = '王红';
  1. delete from grade where id = 1;