SQL知识点

Posted 技术很low的瓜贼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL知识点相关的知识,希望对你有一定的参考价值。

文章目录

SQL知识点

一、概念:

  • 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统

二、SQL三种注释方式

注释语法说明
-- 注释内容单行注释
/*注释内容*/多行注释
# 注释内容mysql特有的单行注释

三、MySQL常见数据类型

四、SQL的分类

  • 数据定义语言(Data Definition Language)简称DDL
  • 数据操作语言(Data Manipulation Language)简称DML
  • 数据查询语言(Data Query Language)简称DQL
  • 数据控制语言(Data Control Language)简称DCL

1.DDL操作数据库

  • 创建数据库
语法说明
create database 数据库名;创建指定名称的数据库。
create database 数据库名 character set 字符集;创建指定名称的数据库,并且指定字符集(一般都指定utf-8)
CREATE DATABASE linyun;

CREATE DATABASE linyun1 CHARACTER SET utf8;
  • 查看/选择数据库
语法说明
use 数据库;切换数据库
select database();查看当前正在使用的数据库
show databases;查看Mysql中 都有哪些数据库
show create database 数据库名;查看一个数据库的定义信息
USE linyun;

SELECT DATABASE();

SHOW DATABASES;

SHOW CREATE DATABASE linyun;
  • 修改数据库
语法说明
alter database 数据库名 character set 字符集;数据库的字符集修改操作
ALTER DATABASE linyun CHARACTER SET utf8;
  • 删除数据库
语法说明
drop database 数据库名;从MySql中永久的删除某个数据库
DROP DATABASE linyun1;
  • 创建表

CREATE TABLE 表名(
字段名称1 字段类型(长度),
字段名称2 字段类型 注意 最后一列不要加逗号
);

USE linyun;

CREATE TABLE weilu(
NAME VARCHAR(20),
age INT
);
  • 复制表结构
语法说明
create table 新表名 like 旧表名;快速创建一个表结构相同的表
CREATE TABLE linyun111 LIKE weilu;
  • 查看表结构
语法说明
DESC 表名;查询表结构
DESC linyun111;
  • 查看表
语法说明
show tables;查看当前数据库中的所有表名
SHOW CREATE TABLE 表名;查看创建表的SQL语句
SHOW TABLES;

SHOW CREATE TABLE weilu;
  • 删除表
语法说明
drop table 表名;删除表(从数据库中永久删除某一张表)
drop table if exists 表名;判断表是否存在, 存在的话就删除,不存在就不执行删除
DROP TABLE linyun111;

DROP TABLE IF EXISTS linyun111;
  • 修改表
语法说明
rename table 旧表名 to 新表名修改表名
alter table 表名 character set 字符集修改表的字符集
alert table 表名 add 字段名称 字段类型向表中添加新的字段
alter table 表名 modify 字段名称 字段类型修改表中字段的数据类型或长度
alter table 表名 change 旧列名 新列名 类型(长度);修改列名称
alter table 表名 drop 列名;删除列
RENAME TABLE weilu TO linyun;

ALTER TABLE linyun CHARACTER SET utf8;

ALTER TABLE linyun ADD sex CHAR(1);

ALTER TABLE linyun MODIFY sex CHAR(2);

ALTER TABLE linyun CHANGE sex sexx CHAR(1);

ALTER TABLE linyun DROP sexx;

2.DML操作数据

  • 插入数据

insert into 表名 (字段名1,字段名2…) values(字段值1,字段值2…);

# 方式一  插入全部字段
INSERT INTO linyun(NAME, age) VALUES('linyun', 21);
# 方式二  插入全部字段,不写段名
INSERT INTO linyun VALUES('yandong', 20);
# 方式三  插入指定字段的值
INSERT INTO linyun(NAME) VALUES('xiaolinyun');
  • 更改数据

不带条件修改:update 表名 set 列名 = 值
待条件修改:update 表名 set 列名 = 值 [where 条件表达式:字段名 = 值 ]

UPDATE linyun SET NAME='linyun';

UPDATE linyun SET NAME='yandong', age='21' WHERE age=20;
  • 删除数据

删除指定数据:delete from 表名 [where 字段名 = 值]
删除所有数据:delete from 表名
不推荐. 有多少条记录 就执行多少次删除操作. 效率低
truncate table 表名;
推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高

DELETE FROM linyun WHERE NAME='yandong';

DELETE FROM test1;

TRUNCATE TABLE test1;

3.DQL查询数据

  • 简单查询
语法说明
select 字段名1,字段名2,… from 表名查询全部数据显示所要查询字段
select * from 表名查询表中的全部数据
SELECT * FROM linyun;

SELECT NAME FROM linyun;
  • 别名查询

别名查询,使用关键字 as

SELECT
NAME AS '姓名',
age AS '年龄'
FROM linyun;
  • 去重查询

使用去重关键字 distinct

SELECT DISTINCT NAME FROM linyun;
  • 运算查询

查询结果然后参与运算

SELECT age+10 FROM linyun; 
  • 条件查询

select 列名 from 表名 where 条件表达式

比较运算符功能
> < <= >= = <> !=大于、小于、大于(小于)等于、不等于
BETWEEN …AND…显示在某一区间的值
IN(集合)集合表示多个值,使用逗号分隔,in中的每个数据都会作为一次条件,只要满足条件就会显示
LIKE ‘%张%’模糊查询
IS NULL查询某一列为NULL的值, 注: 不能写 = NULL
逻辑运算符功能
And &&多个条件同时成立
Or ||多个条件任一成立
Not不成立,取反
通配符功能
%匹配任意多个字符串
_匹配一个字符
SELECT * FROM linyun WHERE age BETWEEN 10 AND 50;

SELECT * FROM linyun WHERE age IN(20, 21, 22);

SELECT * FROM linyun WHERE age IS NULL;

SELECT * FROM linyun WHERE NAME LIKE '%lin%';

SELECT * FROM linyun WHERE age = 20 OR age IS NULL;

4.DCL控制数据

  • MySQL默认使用root用户,拥有全部权限
  • 可以通过DCL语言来定义一些权限较小的用户,分配不同的权限来管理和维护数据库

  • 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
参数说明
用户名创建的新用户,登录名称
主机名指定用户可以在哪一个主机上登录,本地用户可以使用localhost
如果想让用户可以从远程主机登录,可以使用通配符%
密码登陆密码
CREATE USER 'admin1'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'admin2'@'%' IDENTIFIED BY '123456';
  • 用户授权
GRANT 权限 1, 权限 2... ON 数据库名.表名 TO '用户名'@'主机名';
参数说明
权限授予用户的权限,如 CREATE、ALTER、SELECT、INSERT、UPDATE 等
如果要授予所有的权限则使用 ALL
ON用来指定权限针对哪些库和表
TO表示将权限赋予某个用户
GRANT SELECT ON myd.products TO 'admin1'@'localhost';
GRANT ALL ON *.* TO 'admin2'@'%';
  • 查看权限
SHOW GRANTS FOR '用户名'@'主机名';
SHOW GRANTS FOR 'root'@'localhost';
  • 删除用户
DROP USER '用户名'@'主机名';
DROP USER 'admin1'@'localhost';
DROP USER 'admin2'@'%';

以上是关于SQL知识点的主要内容,如果未能解决你的问题,请参考以下文章

sql基本知识

测试工具不够用了?来拿啊!

简要MYSQL注入

Django进阶知识

如何理解SQL的可重复读和幻读之间的区别?

自学SQL