mysql相关
mysql相关
安装自己找资料即可
开启mysql
进入mysql的bin目录,打开console,输入:
mysql -u root -p
输入密码进入成功
基础语法
创建数据库
create database 数据库名;
删除数据库
drop database 数据库名;
选择数据库
use 数据库名;
数据类型
tinyint 1B,范围2^8,可带正负符号;
smallint 2B,2^16,带;
mediumint 3B,2^24,带;
int/interge 4B,2^32,带;
bigint 8B,2^64,带;
float 4B,2^32,带,单精度浮点数;
double 8B,2^64,带,双精度浮点数;
char ,0-255bytes,定长字符串;
varchar,0-2^16bytes,变长字符串;
tinyblob, 0-255,不超过255的二进制字符串;
tinytext,0-255,短文本字符串;
blob,0-2^16,长文本二进制字符串;
text,0-2^16,长文本字符串;
mediumblob,0-16 777 215 bytes二进制形式的中等长度文本数据,;
mediumtext,0-16 777 215 bytes,中等长度文本数据;
longblob,0-4 294 967 295 bytes,二进制形式的极大文本数据;
logtext,0-4 294 967 295 bytes,极大文本数据;
创建数据表
create table table_name(column_name column_type);
实例
create zl if not exists zl(zl_id int unsigned auto_increment,zl_name varchar(100) not null,zl_age data,primary key (zl_name))engine=InnoDB default charset=utf8;
删除数据表
drop table table_name;
实例
drop table zl;
插入数据
insert into table_name(field1,field2,...fieldn)
values
(value1,value2,value3,...valuen);
实例
insert into zl(zl_name,zl_id,zl_age)
values
("zl","123","21");
查询数据
select * from table_name;
实例
select * from zl;
查询数据库
show databases;
查询表
show tables;
where 语法筛选
=,!=,<,<=,>,>=,有6种筛选方式
select *(field1,field2,,,,fieldn) from table_name1,table_name2...table_namen where [condition1 and(or) condition2]..
实例
select * from zl where zl_age>12;
update
update table_name set field1=new-value1,field2=new-value2..where Clause
实例
update zl set zl_id="124",zl_age="24" where zl_name="zl";
delete
delete from table_name [where Clause]
实例
delete from zl where zl_name="zl";
like
select (field1,field2,.fieldn) from table_name where field1 condition and(or) field2='somevalue'
实例
SELECT * from runoob_tbl WHERE runoob_author LIKE '%COM'; %可以视为;
union
select expression1,expression2,.. from tables where conditions union [all|distinct] select expression1... from tables where condintions ;
实例
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country; country为列
排序 order
select field1,field2... from table_name1,table_name2... order by field1 [asc (desc)] field2 [asc(desc)] asc/desc升降序
实例
SELECT * from runoob_tbl ORDER BY submission_date ASC;
分组 group
select column_name,function(column_name) from table_name where column_name operator value group by column_name;
实例
select sage,count(*) from zmm2 group by sage;
连接 inner join/left join/right join
select a.column1,a.column2..b.column1,b.column2... from table_name1 a inner join table_name2 b on a.column=b.column;
实例
select a.sno,a.ssex,a.ssage,b.sage from zmm1 a inner join zmm2 b on a.sage=b.sage;
等于 select a.sno,a.ssex,a.sage,b.sage from zmm1 a,zmm2 b where a.sage=b.sage;
select a.sno,a.ssex,a.ssage,b.sage from zmm1 a left join zmm2 b on a.sage=b.sage; zmm1全选带b.sage
select a.sno,a.ssex,a.ssage,b.sage from zmm1 a right join zmm2 b on a.sage=b.sage; zmm2全选带a.sno,a.ssex,a.sage
null处理
is null 为null返回true
is not null 非null返回ture
<=> 两个值相等或者都为null返回ture;
select * , columnName1+ifnull(columnName2,0) from tableName;columnName1,columnName2 为 int 型,当 columnName2 中,有值为 null 时,columnName1+columnName2=null, ifnull(columnName2,0) 把 columnName2 中 null 值转为 0。
实例
select * from zmm1 where ssex is not null;
正则表达式 筛选
;
事务
对事务进行操作
BEGIN 或 START TRANSACTION 显式地开启一个事务;
COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的;
ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT;
RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;
ROLLBACK TO identifier 把事务回滚到标记点;
SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。
CREATE TABLE runoob_transaction_test( id int(5)) engine=innodb; 事务表需带engine=innodb;
显示表信息
show columns from table_name;
ALTER
删除表字段
alter table table_name drop column_name;
增加表字段
alter table table_name add column_name column_type;
char(1)改为char(10):ALTER TABLE testalter_tbl MODIFY c CHAR(10);
改column_name:ALTER TABLE zmm1 CHANGE sage sge BIGINT;
改column_type:ALTER TABLE zmm1 CHANGE sage sge INT;
改表名:alter table zmm1 rename to zmm4;
指定字段 j 为 NOT NULL 且默认值为100:
ALTER TABLE testalter_tbl
-> MODIFY j BIGINT NOT NULL DEFAULT 100;
修改存储引擎:修改为myisam:alter table tableName engine=myisam;
删除外键约束:keyName是外键别名:alter table tableName drop foreign key keyName;
修改字段的相对位置:alter table t ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
删除字段的默认值: ALTER TABLE table_name ALTER column DROP DEFAULT;
修改默认值:ALTER TABLE table_name ALTER column SET DEFAULT 1000;
索引:这一块没实例,不怎么了解
基本索引
创建索引:create index indexname on table_name (column_name);如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。
添加表结构(索引):alter table table_name add index indexname(column_name);
创建表的时候直接指定:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
删除索引:drop index [indexname] from table_name;
唯一索引
创建索引:create unique index indexname on table_name (column_name(column_length));
修改表结构:alter table table_name add unique [indexname] (column_name(column_length));
创建表的时候直接指定:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)));
alter增删索引:
alter table table_name add index(indexname);
alter table table_name drop index index_name;
ALTER 命令添加和删除主键
alter table table_name modify column_name int not null;
alter table table_name add primary key (column_name);
alter table table_name drop primary key;
显示索引信息:
show index from table_name\G;
临时表
创建临时表加个关键字primary即可,断开数据库连接临时表自动删除
复制表
SHOW CREATE TABLE runoob_tbl \G; 显示被复制表的信息
由第一步表的基础信息创建同样信息不同表名的克隆表
CREATE TABLE clone_tbl (
-> runoob_id int(11) NOT NULL auto_increment,
-> runoob_title varchar(100) NOT NULL default '',
-> runoob_author varchar(40) NOT NULL default '',
-> submission_date date default NULL,
-> PRIMARY KEY (runoob_id),
-> UNIQUE KEY AUTHOR_INDEX (runoob_author)
-> ) ENGINE=InnoDB; 将对应的column_name 数据插入;
另外的方式:
CREATE TABLE targetTable LIKE sourceTable;
INSERT INTO targetTable SELECT * FROM sourceTable;
也可以复制部分,等用到的时候搜索即可;
序列
在column_name column_type 后可加auth_increment实现自动增序;
重复数据
select 列名1,count(1) as count
from 表名
group by 列名1
having count>1 and 其他条件
select 列名1,列名2,count(1) as count
from 表名
group by 列名1,列名2
having count>1 and 其他条件
删除重复数据:
mysql> CREATE TABLE tmp SELECT last_name, first_name, sex FROM person_tbl GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;
或者:
ALTER IGNORE TABLE person_tbl
-> ADD PRIMARY KEY (last_name, first_name);
导出数据
select * from table_name into outfile 'text.txt`
FIELDS TERMINATED BY ',' ENCLOSED BY '"' 设置值用,隔开
LINES TERMINATED BY '\r\n'; 换行
导入数据
1.导入数据库
mysql -u root -p password <数据库;
2.source 导入
mysql> create database abc; # 创建数据库
mysql> use abc; # 使用已创建的数据库
mysql> set names utf8; # 设置编码
mysql> source /home/abc/abc.sql # 导入备份数据库
3.load data 导入
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY '\r\n';
函数及运算符用到的时候查询即可。
第三列的值为前两列之和
update table_name set column3=column1+column2;
筛选行之和
select sum(column1) from table_name where column2='***';
统计人数: select sum(case when sexual='男' then 1 else 0 end) from z6;
写入女统计
mysql> update z7 set woman_num=(select sum(case when sexual='女' then 1 else 0 e
nd)from z6);
写入男统计
mysql> update z7 set man_num=(select sum(case when sexual='男' then 1 else 0 end
)from z6);

浙公网安备 33010602011771号