mysql数据库常见考点语句

虽然有一款非常好用的可视化工具NAVICAT FOR MYSQ,但是必要的数据库语句还是要掌握的,

下面我来介绍一个平时经常用到的一些语句。

一、用户操作

1、新建用户:

   CREATE USER name IDENTIFIED BY 'srm';

2、更改密码:

   SET PASSWORD FOR name=PASSWORD('123456'); 

二、数据库操作

1、查看数据库:

    SHOW DATABASES;

2、创建数据库:

    CREATE DATABASE db_name;  //db_name为数据库名

3、使用数据库:

    USE db_name;

4、删除数据库:

    DROP DATABASE db_name;                                                

三、创建表

1、创建表:

    CREATE TABLE table_name(

    id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,    //id值,无符号、非空、递增——唯一性,可做主键。

    username  VARCHAR(60) NOT NULL

    password TINYINT UNSIGNED NOT NULL DEFAULT 0,    //设置默认列值

    PRIMARY KEY(id)

    )ENGINE=InnoDB    //设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事务;MyISAM高效不支持全文检索

    DEFAULT charset=utf8;  //设置默认的编码,防止数据库中文乱码

   
2、复制表   

  CREATE TABLE tb_name2 SELECT * FROM tb_name; 或者部分复制: CREATE TABLE tb_name2 SELECT id,name FROM tb_name;
3、创建临时表:

    CREATE TEMPORARY TABLE tb_name(这里和创建普通表一样);

4、查看数据库中可用的表:

    SHOW TABLES;

5、查看表的结构:

    DESCRIBE tb_name;

    也可以使用:

    SHOW COLUMNS in tb_name;     //from也可以

6、删除表:

    DROP [ TEMPORARY ] TABLE [ IF EXISTS ] tb_name[ ,tb_name2.......];

    实例:

    DROP TABLE IF EXISTS tb_name;

7、表重命名:

    RENAME TABLE name_old TO name_new;

    还可以使用:

    ALTER TABLE name_old RENAME name_new;

四、修改表

更改表结构:

    ALTER TABLE tb_name ADD[CHANGE,RENAME,DROP] ...要更改的内容...

    实例:

    ALTER TABLE tb_name ADD COLUMN address varchar(80) NOT NULL;

    ALTER TABLE tb_name DROP address;

    ALTER TABLE tb_name CHANGE score score SMALLINT(4) NOT NULL;

五、插入数据

1、插入数据:

    INSERT INTO tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULL,'张五',134);

    这里的插入多条数据直接在后边加上逗号,直接写入插入的数据即可;主键id是自增的列,可以不用写。

2、插入检索出来的数据:

    INSERT INTO tb_name(name,score) SELECT name,score FROM tb_name2; 

六、更新数据

1、指定更新数据:

    UPDATE tb_name SET score=189 WHERE id=2;

    UPDATE tablename SET columnName=NewValue [ WHERE condition ]  

七、删除数据

1、删除数据:

    DELETE FROM tb_name WHERE id=3;

八、条件控制

1、WHERE 语句:

    SELECT * FROM tb_name WHERE id=3;

2、HAVING 语句,having字句可以让我们筛选分组之后的各种数据

    SELECT * FROM tb_name GROUP BY score HAVING count(*)>2

3、相关条件控制符: 

    =、>、<、<>、IN(1,2,3......)、BETWEEN a AND b、NOT

    AND 、OR

    Linke()用法中      %  为匹配任意、  _  匹配一个字符(可以是汉字)

    IS NULL 空值检测

 九、MySQL的正则表达式

1、Mysql支持REGEXP的正则表达式:

    SELECT * FROM tb_name WHERE name REGEXP '^[A-D]'   //找出以A-D 为开头的name

2、特殊字符需要转义。

 十、MySQL的一些函数

1、字符串链接——CONCAT()

    SELECT CONCAT(name,'=>',score) FROM tb_name

2、数学函数:

    AVG、SUM、MAX、MIN、COUNT;

3、文本处理函数:

    TRIM、LOCATE、UPPER、LOWER、SUBSTRING

4、运算符:

    +、-、*、

5、时间函数:

    DATE()、CURTIME()、DAY()、YEAR()、NOW().....       

 十一、分组查询

1、分组查询可以按照指定的列进行分组:

    SELECT COUNT(*) FROM tb_name GROUP BY score HAVING COUNT(*)>1;

2、条件使用Having;

3、ORDER BY 排序:

    ORDER BY DESC|ASC    =>按数据的降序和升序排列

十二、键值操作

# 添加主键
 
ALTER TABLE n ADD PRIMARY KEY (id);
 
ALTER TABLE n ADD CONSTRAINT pk_n PRIMARY KEY (id); # 主键只有一个,所以定义键名似乎也没有什么用
 
# 删除主键
 
ALTER TABLE n DROP PRIMARY KEY ;
 
# 添加外键
 
ALTER TABLE m ADD FOREIGN KEY (id) REFERENCES n(id); # 自动生成键名m_ibfk_1
 
ALTER TABLE m ADD CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES n(id); # 使用定义的键名fk_id
 
# 删除外键
 
ALTER TABLE m DROP FOREIGN KEY `fk_id`;
 
# 修改外键
 
ALTER TABLE m DROP FOREIGN KEY `fk_id`, ADD CONSTRAINT fk_id2 FOREIGN KEY (id) REFERENCES n(id); # 删除之后从新建
 
# 添加唯一键
 
ALTER TABLE n ADD UNIQUE (name);
 
ALTER TABLE n ADD UNIQUE u_name (name);
 
ALTER TABLE n ADD UNIQUE INDEX u_name (name);
 
ALTER TABLE n ADD CONSTRAINT u_name UNIQUE (name);
 
CREATE UNIQUE INDEX u_name ON n(name);
 
# 添加索引
 
ALTER TABLE n ADD INDEX (age);
 
ALTER TABLE n ADD INDEX i_age (age);
 
CREATE INDEX i_age ON n(age);
 
# 删除索引或唯一键
 
DROP INDEX u_name ON n;
 
DROP INDEX i_age ON n;

十三、联表查询

# 内联接,*的位置不可以放公共字段,因为不知道要的哪个
 
SELECT * FROM m INNER JOIN n ON m.id = n.id;
 
# 左外联接,右边表中不满足指定的条件时,会在结果中以 NULL 呈现
 
SELECT * FROM m LEFT JOIN n ON m.id = n.id;
 
# 右外联接
 
SELECT * FROM m RIGHT JOIN n ON m.id = n.id;
 
# 交叉联接
 
SELECT * FROM m CROSS JOIN n; # 标准写法
 
SELECT * FROM m, n;
 
# 类似全连接full join的联接用法
 
SELECT id,name FROM m
 
UNION
 
SELECT id,name FROM n;

十四、聚合函数

SELECT count(id) AS total FROM n; # 总数
 
SELECT sum(age) AS all_age FROM n; # 总和
 
SELECT avg(age) AS all_age FROM n; # 平均值
 
SELECT max(age) AS all_age FROM n; # 最大值
 
SELECT min(age) AS all_age FROM n; # 最小值
 

十五、索引

       索引,在关系数据库中,是一种单独的、物理的对数据库表中的一列或多列的值进行排序的一种存储结构。

它是某个表中一列或若干列的集合和相应的指向表中物理标识。这些值得逻辑页的逻辑指针清单。索引的作用

相当于图书的目录,可以根据页码快速找到所找的内容。数据库根据索引找到特定值,然后顺指针找到该值的

行,这样可以使对应于表的sql语句执行的更快,可以快速访问数据库中的特定信息。

十六、b+树

     B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,

其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。

参考自:https://blog.csdn.net/c361604199/article/details/79479398?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf

原文地址:https://www.cnblogs.com/mvpmvp/p/13604657.html