MYSQL

208 阅读2分钟

2MYSQL数据表的基本操作

2.1MySQL数据表增删改

create table <表名> ([表定义选项])表选项;

--创建表
    create table user(
    	name varchar(20) unique,
        id int(20) auto_increment,
        sex enum(0,1) default 0,
        tel char(11) not null,
        primary key(id)
    );
-- 删除表
    drop table if exists user;
    
-- 查看表结构
    desc user;

2.2MySQL修改数据表

alter table <表名> [修改选项]

  • add column <列名> [修改选项]:添加列
  • change column <旧列名> <新列名> <新类型>:修改列名
  • modify column <列名> <类型>:修改列名
  • drop column <列名>:删除列名
  • rename to 新表名
  • character set <字符集名>
  • collate <校对规则名>
-- 修改表名
    alter table user rename to tb_user;
    
-- 修改表字符集
    alter table tb_user character set utf8;
    
-- 修改字段名称 类型不能为空
    alter table tb_user change name avartername char(20);
    
-- 修改字段类型
    alter table tb_user modify sex eum(0,1);
    
-- 删除字段
    alter table tb_user drop descp;
    
-- 添加字段
    alter table tb_user add descp varchar(50);
    
-- 添加主键
    alter table tb_user add primary key(id,name);
    
-- 删除主键
    alter table tb_user drop primary

2.3MySQL表的约束

  1. mysql主键: primary key
  2. mysql 主键自增: auto_increment
  3. mysql 外键约束: foreign key
  4. mysql 唯一约束: unique key
  5. mysql 检查约束: check
  6. mysql 默认值: default
  7. mysql 非空约束: not null
-- 设置单字段主键
    create table user(
    	id int(11) primary key,
        name varchar(25),
        depId int(11),
        salary float
    )
    -- 设置多字段主键加自增,唯一,默认,
    create table user(
    	id int(11) auto_increment,
        name varchar(25) unique,
        depId int(11) ,
        salary float not null,
        age int default null,
        sex enum(0,1) default 0,
        primary key(id,name),
        constraint department foreign 		     key(deptId)  references tb_dept1(id)
    )

3MYSQL数据表查询

select {* | 字段列名}
from <表名><表名2>
where <表达式>
group by definition
having expression
order by definition
limit offset,count

3.1去重和设置别名

select dictinct age as user_age from user

3.2条件查询

  • 比较运算符和逻辑运算符

  • between and 关键字的查询

  • is null 空查询

  • in 关键字

  • like:% , _

    select * from where age > 20 and name like %ddh%

3.3 分组查询

分组函数需和聚合函数一起使用,count(),sum(),avg(),max() ,min(),

  • group_concat():可以将分组字段值显示出来
  • having: 分组过滤
select sex , count(sex) from user group by sex;
-- 使用group_concat()函数一起使用
select sex , group_concat(name) from user group by sex;
-- 分组过滤
select name,sex,height from user from having height>150; 

3.4交叉连接

-------生成笛卡尔积
    -- 方式1
    select <字段名> from <表1> cross join <表2> [where子句]
    -- 方式2
    select <字段名> from <表1>,<表2> where 交叉连接

3.5连接查询

-- 内连接 on 用于连接条件 inner join
    select <字段名> from <表1> inner join <表2> on 子句
    -- 左连接 left outer join
    select <字段名> from <表1> left outer join <表2> on 子句
    -- 右连接 right outer join 
    select <字段名> from <表1> right outer join <表2> on 子句

4MYSQL数据修改

4.1 插入数据

  1. insert... values 语句

  2. insert... set 语句

-- insert... values
    insert into tb_courses
    (course_id,course_name,course_grade,course_info) values (1,'network',3,'computer')
    
    -- 使用 insert into ... from 复制表
    insert into tb_courses_new
    (course_id,course_name,course_grade,course_info)select  course_id,course_name,course_grade,course_info from tb_courses_new

4.2 更新表中的数据

update tb_courses_new set cour_grade =4 , course_name = 'db' where course_id = 2;

4.3删除表中数据

delete from tb_course where course_id =4

4.4清空表记录

TRUNCATE [TABLE] 表名