SQL简介
数据库简介
常见的SQL数据库有MySQL,SQL server,Oracle、Sybase、db2…不同的数据库所使用的SQL语句也不一样。
- MySQL数据库结构
数据库中包含表,表是由列组成,表的数据存储方式是按行存储。
列名有类型区分常见的就是 int(6),varchar(15):int为数字类型 6为字符长度 varchar为字符类型 15为字符长度
int数字类型不需要引号
varchar字符类型需要打引号
SQL语句
SELECT 语句
用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。
SELECT 列名 FROM 表名
SELECT * FROM 表名
*代表所有
INSERT INTO 语句
用于向表格中插入新的行。
INSERT INTO 表名称 VALUES (值1, 值2,....)
//这个语法的意思是在一个表名的所有列名下面都需要按顺序赋值,并根据字段类型打引号
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
//此语法的作用是在某个表名里面的某个列名进行赋值,需要按照顺序
以上报错的意思是,数据库表创建人设置在增加其他值的时候必须要添加user_id,正确的语句如下:
insert into users (user_id,user,password) values ('6','lll','12345678');
验证是否成功
select * form users;
Delete语句
DELETE FROM 表名称 WHERE 列名称 = 值
DELETE * FROM 表名称
==#用于删除表中的行==
操作删除users表中 user列 中得 lyl 值的这一行
执行 delete from users where user
= ‘lyl’;语句,因为user列是varchar字符型,varchar字符类型需要打引号
delete from users where `user` = 'lyl';
验证是否删除成功 执行 select * from users 语句
select * from users
Update 语句
用于修改表中的数据。
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
修改users表中,user_id列 6 的值为 7
update users set user_id = 7 where user_id = 6;
验证是否修改成功
select * from users
Order by 语句
语法:
select 列名 from 表名 order by 列名 DESC
用于对结果集进行排序。
用于根据指定的列对结果集进行排序。
不加DESC默认按照升序对记录进行排序
加DESC则按照降序对记录排序
操作查看users表中 user_id,user,password 列值并指定user降序排序
select user_id,user,password from users order by user desc;
order by 排序列数大于当前查询的列数时就会报错;如下:
Where 语句
有条件地从表中选取数据。
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
运算符
AND 和 OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
举个栗子 我需要查看user_id,user,password 的列,单独查找user_id为3并且user为1337,这里就需要用到AND运算符
select user_id,user,password from users where user_id = 3 and user = 1337;
如果我需要查看user_id,user,password 的列,单独查找 user_id 为 3 或者 user 为 admin,这里就需要用到OR运算符
select user_id,user,password from users where user_id = 3 or user = 'admin';
Limit 控制输出
select * from users limit 0,2;
## 0,2 的意思是只显示两行以此类推
MySQL注释符
注释符可以替换空格
select/*123*/* from users /*user*/
/* */ 在mysql中是多行注释 但是如果里面加了! 那么后面的内容会被执行 /*!/*!*/
内联注入
select/*123*/* from/*!users*/
/* */ 在mysql中是多行注释 但是如果里面加了! 那么后面的内容会被执行 /*!/*!*/
单行注释符后面加换行也是可以执行的
select * from #454654654
users;
MySQL基础
01、显示数据库 show databases;
02、打开数据库 use db_name;
03、显示数据表 show tables;
04、显示表结构 describe table_name;
05、显示表中各字段信息,即表结构 show columns from table_name;
06、显示表创建过程 show create table 表名;
07、列出当前mysql的相关状态信息 status;
08、删除数据库 drop database 数据库名;
09、清空数据表 delete from table_name; truncate table
table_name;
10、删除数据表 drop table table_name
11、数据库连接 mysql –uroot -proot
12、数据库退出 exit
MySQL系统表
- information_schema
在 MySQL中 ,把 information_schema 看作是一个数据库,确切说是信息数据库。
其中保存着关于 MySQL 服务器所维护的所有其他数据库的信息。如数据库名,数据
库的表,表栏的数据类型与访问权限等。
- SCHEMATA 表:提供了当前mysql实例中所有数据库的信息。
show databases的结果取之此表。
- TABLES 表:提供了关于数据库中的表的信息。详细表述了某个表属于哪个
schema,表类型,表引擎,创建时间等信息。
show tables from schemaname的结果取之此表。
- COLUMNS 表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信
息。
show columns from schemaname.tablename的结果取之此表。
数据库连接
# 格式 mysql -u 用户名 -p 密码 -h 主机地址
mysql –uroot -proot -h 127.0.0.1
以PHPstudy为例子,开启MySQL服务,在数据库里面查看用户名和密码,然后找到这个路径(我这边是这个路径,具体看个人的情况),通过以上命令格式进行数据库连接
D:\phpstudy_pro\Extensions\MySQL5.7.26\bin
列出当前 mysql 的相关状态信息
status;
显示数据库
show databases;
打开数据库
# 格式:use 数据库名;
use mysql;
显示数据表
show tables;
显示表结构
# 格式:describe 数据表名;
describe users;
# 格式:show columns from 数据表名;
show columns from users;
显示表创建过程
# 格式:show create table 表名;
show create table users;
清空数据表
# 格式:delete from 数据表名;
delete from test01;
# 格式:truncate table 数据表名;
truncate table test01;
删除数据表
# 格式:drop table 数据表;
drop table test01;
删除数据库
# 格式:drop database 数据库名;
drop database test;
退出数据库连接
exit