MySQL学习笔记

 

mysql 基础学习
一切换数据库和显示数据表名
use 数据库
显示表
show tables

二查看表结构
1第一种方法
desc 表名
2第二种方法
show columns from 表名

三查看表索引
show index from 表名

四创建表
create table table面(
uid int UNSIGNED auto_increment,
uname varchar(100) not null,
primary key(uid)
) engine=innodb default charset=utf8;

五 删除表
drop table 表名

六操作
查询 select * from 表名 where 查询条件
添加 insert into 表名(字段) values(数值)
修改 update 表名 set 字段 =值 where 查询条件
删除 delete 表名 where 查询条件

七 空数据处理
我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:
select coalesce(null,'b','c');#返回b
select coalesce(null,null,'c'); #返回c
select coalesce('a','b','c');#返回a
参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。
mysql> SELECT coalesce(name, '总数')'总数', SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+--------+--------------+
| 总数 | singin_count |
+--------+--------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| 总数 | 16 |
+--------+--------------+
可以用于统计汇总

八 null 值处理
查询条件 is not null 或 is null
在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。
MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。
对于 null 使用 = 或!= 都是不起作用的

九MySQL中的正则表达式
找name字段中以'st'为开头的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
查找name字段中以'ok'为结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
查找name字段中包含'mar'字符串的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

#以客开头的
SELECT * from gen_table_column where column_comment REGEXP '^客';

#以名结尾的
SELECT * from gen_table_column where column_comment REGEXP '名$';

#包含户的
SELECT * from gen_table_column where column_comment REGEXP '户';

#以客开头或以名称结尾的
SELECT * from gen_table_column where column_comment REGEXP '^客|名称$';

十事务
MySQL 事务主要用于处理操作量大,复杂度高的数据
一般来说,事务是必须满足4个条件(ACID)::
原子性(Atomicity,或称不可分割性)、
一致性(Consistency)、
隔离性(Isolation,又称独立性)、包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
持久性(Durability)。

BEGIN 或 START TRANSACTION 显式地开启一个事务;

十一 MySQL中修改命令alter
#添加字段并设置默认值
ALTER table t3 add address VARCHAR(100) not null default 'hello'
ALTER table t3 add age int not null default 18
ALTER table t3 add score int

#删除字段
alter table t3 drop age

#修改字段大小
alter table t3 modify address varchar(200)

#修改字段为名称为新的名称
ALTER table t3 change address newaddress VARCHAR(100)

#修改默认值
ALTER table t3 alter age set default 21

#修改有默认值
ALTER table t3
MODIFY score int default 60;

#删除默认值
ALTER table t3 alter age drop default

十二 MySQL索引
#创建索引
create index index_name on 表名(列)
#修改表结构添加索引
ALTER table tableName ADD INDEX indexName(columnName)
#创建唯一索引
CREATE UNIQUE INDEX indexName ON mytable(username(length))
#删除索引
alter table 表名 drop index 索引名

十三 MySQL 复制表
显示创建表的语句 show create table 表名
#复制表结构
CREATE TABLE targetTable LIKE sourceTable;
#复制表数据
INSERT INTO targetTable SELECT * FROM sourceTable;

#复制表部分字段和值
CREATE TABLE newadmin AS
(
SELECT username, password FROM admin
)

#复制表部分字段并改变名称
CREATE TABLE newadmin AS
(
SELECT id, username AS uname, password AS pass FROM admin
)

#复制表结构并拷贝部分数据
CREATE TABLE newadmin AS
(
SELECT * FROM admin WHERE LEFT(username,1) = 's'
)
#复制表结构,拷贝数据,并调整字段
CREATE TABLE newadmin
(
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
AS
(
SELECT * FROM admin
)

十三 MySQL临时表
当关闭连接时,Mysql会自动删除表并释放所有空间。
create temporary table 表名(uid int ,uname varchar(100))

posted @ 2021-06-02 17:30  剧里局外  阅读(59)  评论(0编辑  收藏  举报