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))