创建数据库 create database 数据库名
创建数据表 create table 表名(字段 字段类型);
显示数据库 show databases
显示数据表 show tables
使用数据库 use 库名
删除数据库 drop database 库名
删除数据表 drop table 表名
删除数据表纪录 delete from 表名
删除数据表指定纪录 delete from 表名 where 字段名 = 值
查询数据表纪录 select * from 表名
查询数据表指定纪录 select * from 表名 where 字段名 = 值
更新数据表纪录 update 表名 set 字段名 = 值
更新数据表指定纪录 update 表明 set 字段名 = 值 where 字段名 = 值
增加数据 insert into 表名 values(字段值)
对于字符集的支持细化到四个层次:服务器(server),数据库(database),数据表(table)和连接(connection)。
在my.ini文件中找到[client]和[mysqld]字段,在下面均加上default-character-set=utf8,保存并关闭
显示mysql当前版本 select version()
显示当前时间 select now()
显示年月日 :
SELECT DAYOFMONTH(CURRENT_DATE);
SELECT YEAR(CURRENT_DATE);
SELECT MONTH(CURRENT_DATE);
显示字符串 SELECT "welecome to my blog!";
当计算器用 select ((4 * 4) / 10 ) + 25;
串接字符串 select CONCAT(f_name, " ", l_name) AS Name from employee_data where title = 'Marketing Executive';
增加字段 ALTER TABLE table_name ADD field_name field_type;
加索引 alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
加主关键字的索引 alter table 表名 add primary key (字段名);
加唯一限制条件的索引 alter table 表名 add unique 索引名 (字段名);
删除某个索引 alter table 表名 drop index 索引名;
修改原字段名称及类型 ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
删除字段 ALTER TABLE table_name DROP field_name;
修改表名 rename table 原表名 to 新表名
导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名
导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
导出一个数据库结构 mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
带语言参数导出 mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
蠕虫复制数据语法:insert into 表名字[字段列表] select 字段列表/* from 数据表名;
更新数据 高级语法:update 表名 set 字段名 = 值 [where条件] [limit 更新数量];
删除数据 高级语法:delete 表名 set 字段名 = 值 [where条件] [limit 删除数量];
Truncate用法 truncate 表名字; 使表的自增长重新开始计算
查询语句 完整语法:select [select选项] 字段列表 [字段别名] /* from 数据源 [where条件子句] [group by子句] [haviing子 句] [order by子句] [limit子句];
数据源 select * from student,student2; 多表数据源会形成“笛卡儿积”,从一张表中取出一条记录以后,再去另外一张表 中匹配所有记录,而且全部保留(记录数和字段),笛卡儿积其实没什么用,应该尽量避免使用。
子查询 语法: select * from (select * from 表名字) as 别名(别名不能省);
select * from (select * from student) as stu;
Having子句 与where子句一样,是进行条件判断用的。
所有班级大于2的人数:select c_id,count(*) from student2 group by c_id having count(*) > 2;
++++++++++++++++++++++------------------+++++++++++++++++++++--------------------------+++++++++++++++++++---------+++
注:having能够识别字段别名,where 不能(where是从磁盘中取数据,而磁盘中的数据没有别名,只可能是字段名,别名是字段进入到内存以后才会产生的)
命令导入 mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql)
source 命令导入 source /home/abc/abc.sql
使用 LOAD DATA 导入数据 LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
使用 mysqlimport 导入数据 mysqlimport -u root -p --local database_name dump.txt
选项 | 功能 |
---|---|
-d or --delete | 新数据导入数据表中之前删除数据数据表中的所有信息 |
-f or --force | 不管是否遇到错误,mysqlimport将强制继续插入数据 |
-i or --ignore | mysqlimport跳过或者忽略那些有相同唯一 关键字的行, 导入文件中的数据将被忽略。 |
-l or -lock-tables | 数据被插入之前锁住表,这样就防止了, 你在更新数据库时,用户的查询和更新受到影响。 |
-r or -replace | 这个选项与-i选项的作用相反;此选项将替代 表中有相同唯一关键字的记录。 |
--fields-enclosed- by= char | 指定文本文件中数据的记录时以什么括起的, 很多情况下 数据以双引号括起。 默认的情况下数据是没有被字符括起的。 |
--fields-terminated- by=char | 指定各个数据的值之间的分隔符,在句号分隔的文件中, 分隔符是句号。您可以用此选项指定数据之间的分隔符。 默认的分隔符是跳格符(Tab) |
--lines-terminated- by=str | 此选项指定文本文件中行与行之间数据的分隔字符串 或者字符。 默认的情况下mysqlimport以newline为行分隔符。 您可以选择用一个字符串来替代一个单个的字符: 一个新行或者一个回车。 |