MySql基础语法

创建数据库
                create database 数据库名称;
            创建数据库,判断不存在,再创建
                create database if not exists 数据库名称;
            创建数据库,并指定字符集
                create database 数据库名称 character set 字符集名;
            创建数据库,判断是否存在,并指定字符集
                create database if not exists 数据库名称 character set 字符集名;

INSERT INTO  DATABASE IF NOT EXISTS db1 CHARACTER SET utf8;-- 创建数据库

删除数据库
                drop database 数据库名称;
            判断数据库是否存在,存在再删除
                drop database if exists 数据库名称;

创建表

        语法:
                create  table 表名(
                    列名1  数据类型1,
                    列名2  数据类型2,
                    ...
                    列名n 数据类型n
                );
                注意:最后一列,不需要加逗号(,)

数据库类型:
                    int:整数类型
                        age int,
                    double:小数类型
                        score double(5,2) -- (有几位,保留几位)
                    date:日期,只包含年月日,yyyy-MM-dd
                    datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
                    timestamp:时间错类型   包含年月日是否秒 yyyy-MM-dd HH:mm:ss
                        如果将来不给这字段赋值,或赋值null,则默认使用当前系统时间,来自动赋值
                    varchar:字符串类型
                        name varchar(20) -- 姓名最大20个字符

-- 创建表 学生表
CREATE TABLE IF NOT EXISTS student(
id INT, -- 编号
NAME VARCHAR(20), -- 姓名
age INT, -- 年龄
gender VARCHAR(5), -- 性别
address VARCHAR(100), -- 地址
math INT, -- 数学
english INT  -- 英语`dept`
)

删除表
            drop table 表名;--  删除表
            drop table if exists 表名;--  判断是否存在并删除表

 
查询
            查询某个数据库中的所有表名称
                show tables;
            查询表结构
                desc 表名;
修改
            修改表名
                alter table 表名 rename to 新的表名;
            修改表的字符集
                alter table 表名 character set 字符集名称
            添加一列
                alter table 表名 add 列名 数据类型
            修改列名称  类型
                alter table 表名 change 列名 新列名 新数据类型;
                alter table 表名 modify 列名  新数据类型;
            删除列
                alter table 表名 drop 列名;    
   删除
            drop table 表名;--  删除表
            drop table if exists 表名;--  判断是否存在并删除表

        

 添加数据
        语法:
            insert into 表名(列名1,列名2,.... 列名n)values(值1,值2,值3.....)

 

INSERT INTO student (id,NAME,age,gender,address,math,english)
VALUES
	(1,'曹军',18,'男','湖南',68,78),
	(2,'成虫',19,'男','湖南',99,100),
	(3,'小军',18,'男','中国',60,58),
	(4,'华语',19,'男','北京',78,10),
	(5,'阿威',18,'男','长沙',45,7),
	(6,'恒子',19,'男','上海',9,0),
	(7,'市场新',18,'男','衡阳',64,58),
	(8,'和西维',19,'男','岳阳',95,45),
	(9,'六结尾',20,'男','长沙',90,NULL)

注意:
            列名和值要一一对应
            如果表名后,不定义列名,则默认给所有列添加值
            除了数字类型,其他类型需要使用引号(单双都可以)引起来

修改数据
        语法:
            update 表名 set 列名1 = 值1 ,列名2 = 值2 ,......    where 条件;

        注意:
             如果不加任何条件,则会将表中所有记录全部删除

update student set math = 59 ,english = 59 where NAME = '曹军'; -- 修改名字为曹军的数学、英语成绩

查询表中的记录
    select * from 表名;
    
    语法:
        select
            字段列表
        from 
            表名列表
        where
            条件列表
        group by
            分组字段
        having 
            分组之后的条件
        order by
            排序
        limit
            分页限定

SELECT 
	NAME, -- 姓名
	age -- 年龄
FROM 
	student;-- 查询姓名和年龄


        基础查询
            多个字段的查询
                select 字段名1,字段名2..... from 表名;
                注意如果查询所有字段,则可以使用*来替代字段列表
        去除重复
            distinct

SELECT DISTINCT address FROM student; -- 去除重复的结果集


        计算值
            一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
            ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
                表达式1:哪个字段需要判断是否为null
                表达式2:该字段为null的替换值
        起别名
            字段名 as 别名:as 也可以省略

-- 计算 math 和 english 分数之和
SELECT NAME , math ,english , math+english FROM student;


        条件查询
            where字句后跟条件
        运算符
            >、<、<=、>=、=、<>
            between...and 在什么之间
            in(集合) 在上面范围之内
            like 模糊查询
                占位符
                    _:单个任意字符
                    %:多个任意字符
            is null  判断为null
            and 或 && 并且
            or 或 || 或者
            not 或 ! 非

SELECT * FROM student WHERE age >= 20; -- 查询年龄大于等于20的

        排序查询
            语法 :order by 字句
                order by 排序字段1 排序方式1,排序字段2 排序方式2.....

            排序方式
                ASC :升序,默认的
                DESC:降序
            注意
                如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件

SELECT * FROM student ORDER BY math DESC; -- 降序查询

        聚合函数:将一列数据作为一个整体,进行纵向计算
            count:计算个数
            max:计算最大值
            min:计算最小值
            sun:计算和
            avg:计算平均值

            注意:聚合函数的计算,排除null值
                解决方案
                    选择不包含非空的列进行计算
                    ifnull函数替换

SELECT COUNT(NAME) 人数 FROM student; -- 查询总人数

        分组查询
            语法:group by 分组字段;
            注意
                分组之后的字段:分组字段、聚合函数
                where 和 having 的区别
                    where 在分组之前进行限定,如果不满足,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
                    where 后不可以跟聚合函数,having可以进行聚合函数的判断

约束
    概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。
    分类:
        主键约束:primary key
        非空约束:not null
        唯一约束:unique
        外键约束:foreign key

    非空约束:not null
        创建表时添加约束
            name varchar (20) not null
        创建表玩后,添加非空约束
            alteer table 表名 modify name varchar (20) not null;
        删除name的非空约束
            alteer table 表名 modify name varchar (20);

        唯一约束:unique,某一列的值不能重复
            注意
                唯一约束可以有null值,但是只能有一条记录为null
            删除唯一约束
                alter table 表名 drop index 列名;
            创建完表添加唯一约束
                alteer table 表名 modify name varchar (20) unique;

        主键约束:primary key 
            注意
                含义:非空且唯一
                一张表只能有一个字段为主键
                主键就是表中记录的唯一标识
            创建表时添加主键
                id int primary key;
            创建完表添加主键
                alter table 表名 modify id primary key;
            删除主键
                alter table 表名 drop primary key;
            自动增长
                概念:如果某一列是数值类型的,使用 auto_increment 可以来完成自动增长
                创建表时添加主键自动增长 
                    id int primary key auto_increment;
                删除自动增长
                    alter table 表名 modify id int;
                添加自动增长
                    alter table 表名 modify id int auto_increment;

        外键约束:foreign key,可以让表产生关系,从而保证数据的正确性
            在创建表时,,可以添加外键
                语法:
                    create table 表名(
                        .....
                        外键列
                        constraint 外键名称 foreign key(外键列名称)references 主表名称(主表列名称)
                    )

            删除外键
                alter table 表名 drop foreign key 外键名称;
            创建表之后,添加外键
                alter table employee add constraint 外键名称 foreign key(外键列名称)references 主表名称(主表列名称)

            级联操作
                添加级联操作
                    语法:alter table 表名 add constraint 外键名称
                        foreign key (外键列名称)references 主表名称(主表列名称)on update cascade on delete cascade

                分类:
                    级联更新:on update cascade
                    级联删除:on delete cascade

多表查询
    查询语法:
        select 
            列名列表
        from
            列名列表
        where ..... 
    
    笛卡尔积
        有两个集合A,B 取这连哥哥集合的所有组成情况
        要完成多表查询,需要消除无用的数据
    
    多表查询的分类
        内连接查询
            隐式内连接:使用where条件消除无用数据
            显示内连接:
                语法:selset 字段列表 from 表名1 inner join 表名2 on 条件
        外连接查询
            左外连接
                语法:select 字段列表 from 表1 left outer join 表2 条件
                查询的时左所有数据以及其交集部分
            右外连接
                语法:select 字段列表 from 表1 right outer join 表2 条件
                查询的时右所有数据以及其交集部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值