MySQL 常用基础知识,多学一门技能,不求人
2023-06-13 09:12:26 时间
常用数据库操作
创建数据库
CREATE DATABASE 数据库名;
查看现有数据库
show databases;
使用数据库
use 数据库名;
查看表数据
show tables;
删除数据库
drop database 数据库名;
常用表的操作
创建一张表(字段名 字段类型(字段长度))
CREATE DATABASE 数据库名(firstname VARCHAR(20), lastname VARCHAR(35));
查看一张表
describe 表名;
DESC 表名;
修改表名
ALTER table 表名 RENAME TO 表名2;
删除表
drop TABLE 表名;
常用字段操作
字段的添加
ALTER TABLE 表名 ADD 字段名 VARCHAR(40);
指定位置添加字段
ALTER TABLE 表名 ADD 字段名 VARCHAR(40) AFTER 字段名1;
desc 表名;
删除字段
ALTER TABLE 表名 DROP 字段名;
数据的插入
INSERT INTO '表名' ('字段1', '字段2') VALUES ("内容1", "内容2");
数据查询
不加关键字的查询
无限制条件的查询
SELECT * FROM 表名;
查询指定列
SELECT 字段1, 字段2 FROM 表明;
排序查询(倒序),默认升序
SELECT * FROM 表名 ORDER BY 字段名 DESC;
根据条件查询
SELECT * FROM 表名 WHERE 字段=112;
多条件查询
SELECT * FROM 表名 WHERE 字段=112 or 字段=148;
SELECT * FROM 表名 WHERE country="USA" AND city="New York";
SELECT * FROM 表名 WHERE 字段 BETWEEN 1000 and 2000;
SELECT * FROM 表名 WHERE 字段 in (114, 151, 259);
### 查询包含Gift的字段
SELECT * FROM 表名 WHERE 字段 LIKE "%Gift%";
### 查询以Gift开头的
SELECT * FROM 表名 WHERE 字段 LIKE "Gift%";
### 查询以Gift结尾的
SELECT * FROM 表名 WHERE 字段 LIKE "%Gift";
连接查询
内连接
SELECT 字段名1, 字段名2 FROM 表名 重命名表 INNER JOIN 表名2 重命名表2 on 重命名表.'name'=重命名表2.'name';
左连接
SELECT 重命名表.字段名1, 重命名表.字段名2 重命名表2.字段名3 重命名表2.字段名4 FROM 表名 重命名表 left JOIN 表名2 重命名表2 on 重命名表.'name'=重命名表2.'name' where 重命名表2.字段名4 is NULL;
右连接
SELECT 重命名表.字段名1, 重命名表.字段名2 重命名表2.字段名3 重命名表2.字段名4 FROM 表名 重命名表 right JOIN 表名2 重命名表2 on 重命名表.'name'=重命名表2.'name';
交叉连接
SELECT 字段 FROM 表1 CROSS JOIN 表2;
查询统计某个字段(为具体数值时)的数据个数
SELECT count(*) FROM 表名 WHERE conditions
查询某一字段不同值的个数
SELECT
字段1, sum(case when 字段2=具体数值/内容 then 1 else 0 end) as 0, sum(case when 字段2=具体数值/内容2 then 1 else 0 end) as 1
FROM 表名
GROUP BY 字段1
创建数据库
CREATE DATABASE mydata;
连接到指定的数据库
USE mydata;
删除数据库
DROP DATABASE mydata;
创建表
CREATE TABLE student( nt(
id INT,### 整型
studentName VARCHAR(20),### 可变长字符类型
grade DECIMAL(10,2)### 有效长度为10,保留两位小数
)DEFAULT CHARSET=utf8;### 设置编码集为utf8
向表中插入记录
INSERT INTO student(id,studentName,grade) VALUES (32,"张三",70);
查询表中记录
SELECT *FROM student;
SELECT id,studentName,grade FROM student;
删除表
DROP TABLE student;
修改表中记录
UPDATE student SET studentName="李四" WHERE id=32;
删除表中记录
DELETE FROM student WHERE id=32;
复制表
CREATE TABLE mystu SELECT * FROM student;
复制表,但加上为假的条件,只复制表结构不复制记录
CREATE TABLE mystu1 SELECT * FROM student WHERE 1=0;
添加新列
ALTER TABLE student ADD sex VARCHAR(10);
修改列名
ALTER TABLE student CHANGE sex birthday VARCHAR(30);
删除列
ALTER TABLE student DROP COLUMN birthday;
一、实体完整性:保证每行所代表的实体能相互区别,不能存在两条一模一样的记录。
实现方法:
主键约束:主键列不能为空,也不能重复。一个表中只能有一个主键。
唯一约束:是指给定列的所有值必须唯一,该列在表中每一行的值必须唯一。
它和主键约束的区别在于该列可以为空,并且可以在一张表中给多个列设置唯一约束。
二、域完整性:保证指定列的数据的有效性,是指列的输入有效性
实现方法
非空约束:NotNull
默认约束:Default
检查约束:Check(MySQL不支持)
三、外键和外键约束:
外键:是指从表的某列与主表的某列存在依附关系
外键约束:是指在主键关联的外键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改。
注意:没有建立外键约束不等于没有外键
[sql]
CREATE TABLE person(
### 设置id列为主键列:不能为null,同时不能重复,AUTO_INCREMENT表示设置主键列为自动增长列
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(40) UNIQUE, ### 姓名列不能重复
sex VARCHAR(40) NOT NULL ### 增加非空约束
)AUTO_INCREMENT=1000;### 列号起始为1000
一旦设置了自动增长列,该列的数据就可以由DBMS来维护
INSERT INTO person(NAME,sex) VALUES("张三","男");
INSERT INTO person(NAME,sex) VALUES("李四","男");
INSERT INTO person(NAME,sex) VALUES("王五","男");
增加默认约束,增加默认约束的列,在不插入数据时,默认为指定值,一般在建表时就加上
ALTER TABLE person ADD contry VARCHAR(40)DEFAULT "中国";
CREATE TABLE computer(
id INT PRIMARY KEY AUTO_INCREMENT,
computerType VARCHAR(30),
personid INT ,
CONSTRAINT fk_com FOREIGN KEY(personid) REFERENCES person(id)
)ENGINE=INNODB;
增加外键约束,用从表的外键列去关联主表的主键列。
也就是说从表的外键列出现的内容必须是主表主键列出现的内容。
ALTER TABLE computer ADD CONSTRAINT fk_com FOREIGN KEY(personid) REFERENCES person(id);
开启事务
START TRANSACTION;
DELETE FROM person;
提交事务,若执行了提交事务,则将现在所有的操作更新数据库,数据不能回滚
COMMIT;
回滚事务
ROLLBACK;
DELETE 会记录日志,意味着删除后的数据还可以恢复,但是效率低。
TRUNCATE不会记录日志,删除后的数据不能恢复,但是效率高。
删除所有记录,记录不能回滚
TRUNCATE TABLE dog;
concat 连接字符串
UPDATE person SET NAME=CONCAT(NAME,"你好");
给表和列取别名
SELECT p.NAME 姓名 FROM person p;
手动建立product表,并添加如下数据
INSERT INTO product(productName,price,number,factory)VALUES("电视机",1500,2,"绵阳");
INSERT INTO product(productName,price,number,factory)VALUES("电冰箱",2500,1,NULL);
INSERT INTO product(productName,price,number,factory)VALUES("毛毯",150,5,"内蒙古");
INSERT INTO product(productName,price,number,factory)VALUES("苹果",5,6,NULL);
INSERT INTO product(productName,price,number,factory)VALUES("板凳",150,10,"成都");
INSERT INTO product(productName,price,number,factory)VALUES("芒果",10,8,"海南");
查询时可以加入计算
SELECT p.*,price*number totalprice FROM product p
去除重复的记录
SELECT DISTINCT price FROM product;
返回指定行数的记录,第一个参数表示从第几行开始(第一行为0),第二个参数表示显示几条记录
SELECT * FROM product LIMIT 1,3
查询条件为复合条件时,and 连接表示并且;or连接表示或者,between...and连接表示在...之间
SELECT * FROM product WHERE price>1000 AND factory="绵阳"
SELECT * FROM product WHERE price>1000 OR factory="绵阳"
SELECT * FROM product WHERE price BETWEEN 100 AND 2000
查询id为3和5的商品(IN的用法)
SELECT * FROM product WHERE id IN(3,5);
查询id不为3和5的商品(NOT IN的用法)
SELECT * FROM product WHERE id NOT IN(3,5);
模糊查询
“-”通配符 _表示任何单个字符,“%”表示包含零个或多个任意字符
SELECT * FROM product WHERE productName LIKE "%电%";
### 查询厂家为null 的商品
```sql
SELECT * FROM product WHERE factory IS NULL
按商品单价排序显示 .ORDER BY price,id表示先按price排序,price相同时再按id排序
SELECT * FROM product ORDER BY price,id;### 升序
SELECT * FROM product ORDER BY price DESC,id DESC;### 降序
学习地址:MySQL常用基础语句
相关文章
- Mysql查看当前行号的函数使用方法(mysql行号函数)
- MySQL快速入门:基础知识指南(mysql基础入门)
- Mysql函数精选大全,一览无余!(mysql常用的函数大全)
- 精通MySQL二级考试:一路向前!(mysql二级考试)
- 机制MySQL数据库的加锁机制解读(mysql数据库加锁)
- MySQL中的求和函数详解(mysql的求和函数)
- MySQL常用参数配置实践(mysql常用参数配置)
- MySQL数据库文件遗失:如何恢复(mysql数据库文件丢失)
- MySQL主从架构维护与修复(mysql 主从修复)
- 教你轻松卸载MYSQL数据库软件(mysql 卸载 软件)
- Bat 批处理工具快速备份 MySQL 数据库(bat 备份 mysql)
- MySQL中常用的编码有哪些(mysql中使用哪些编码)
- MySQL下的空值是什么(mysql中什么是空值)
- MySQL数据库中常用的主要数据类型(mysql中主要类型)
- 50个MySQL语句,最全最实用的MySQL指南(50个常用mysql语句)
- 文件在cmd中快速定位MYSQL文件(cmd定位到mysql)
- 10秒之内,学会MySQL基础知识(10秒快速学会mysql)
- MySQL服务类型解析单机模式主从模式集群模式(mysql三种服务类型)
- MySQL常用索引解析(mysql一般索引)
- MySQL常用下载渠道及步骤(mysql一般下载哪个)
- MySQL一小时快速入门轻松掌握基本语法和常用操作(mysql 一小时)
- MySQL函数大全这些常用函数能快速提高数据库查询效率(mysql 一些函数用法)
- Mysql和Xmind交互提高数据库管理效率(mysql xmind)
- 解决MySQL乱码问题(mysql上面乱码)