MYSQL数据库CMD命令笔记整理

来源:互联网 发布:打扮家 知乎 编辑:程序博客网 时间:2024/05/01 20:35

SQL数据库DS操作系统编译基础
MySQL不支持的功能 事务,视图,外键和引用完整性,存储过程和触发器
mysqld //启用数据库
mysql -u root -p //默认的系统管理员,密码一般为空
连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码]
连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110 用户名为 root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123
操作指定数据库:use 数据库名;
新建用户:
1.授权法:
grant 权限名字 on 数据库名字.*to 新用户名@主机名(localhost为当前主机也可以用自己的ID来书写例:127.1.1.1);
权限名称:
1.新建:create;
2.添加行列|| 修改:alter;
3.drop 删除表
4.select 查询
5.insert 插入
6.update 更新
7.delete 删除表里的数据
8.all privileges
创建数据库:create database [库名] 显示所有数据库: show databases; 打开数据库:use [库名] 当前选择的库状态:SELECT DATABASE(); 创建数据表:CREATE TABLE [表名]([字段名] 字段类型 [字段参数], ……); 显示数据表字段:describe 表名; 当前库数据表结构:show tables;
数据库(database)
新建中文数据库必须在 mysql -u root -p权限下
create database chinesedb charset utf8;

授权数据库关联账户lijingji赋予所有权限
grant all privileges on chinesedb.*to lijingji@localhost;
撤销数据库权限
revoke 权限名字 from 用户名@IP地址(主机名);
查看数据库:
show databases;
新建数据库:
create database 数据库名;
清屏: cls 退出 :exit
使用数据库: use 数据库名;
删除数据库: drop database 数据库名字;
删除用户:drop user 用户名@主机名;

表(table):
建表规则:
1.表名,字段名必须是标识符,而且不能是mysql里面预定义的,而且要有意义的切勿随便命名最后自己看不懂。
2.所有不用于计算的字段都用字符型,时间型除外。
创建表:create table 表名(字段1 字段1数据类型,
字段2 字段2数据类型,
……
字段n 字段n数据类型);
更改表格  ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE 说明:增加一个栏位(没有删除某个栏位的语法。
数据类型:
数值型:
int(整数)
double(爽精度浮点型小数)
float(单精度浮点型小数)
字符型:char
时间类型:
datetime 格式:(YYYY-MM-DD HH:MM:SS)
date格式:(YYYY-MM-DD)
time 格式:(HH:MM:SS)
year格式:(YYYY)

查看表的结构: describe 表名;
查看所有的表: show tables;
查看表数据:select * from 表名;
查看选定字段:selct 字段 from emp;
查看建表属性:show create table 表名;

删除整个表格:drop table course;
删除整个表格数据:delete from 表名;
删除单独一条数据 delete from 表名where 字段=字段类型;
where用于筛选;
drop(删除表结构)
delete(删除表数据)
trancate(删除表储存空间、数据)
dml 数据操纵语言:
select, insert, update, delete
ddl 数据定义语言
crente, alter, drop
dcl数据控制语言
grant, revoke
修改字段类型:alter table 表名 modify (字段 字段类型 直接修改);
格式:mysqladmin -u用户名 -p旧密码 password 新密码
mysqladmin -uroot -password ab12
更改表格:  ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE 说明:增加一个栏位(没有删除某个栏位的语法。

在新建表的时候可以使用以下格式形成约束{
create table 表名(
字段1 字段1类型【约束】,
字段2 字段2类型【约束】,
……
字段n 字段n类型【约束】);
例: empno char(14) primary key;
约束:
1.非空约束(not null):定义了该值后数据不能为空。
添加非空约束:alter table 表名 modify 字段 字段类型 not null;
删除非空约束:alter table 表名 modify 字段 字段类型;

2.主键约束(primary key):一张表只有一个项目可以定义主键约束,主键约束自带非空约束。
添加主键约束:alter table 表名 modify 字段 字段类型 primary key;
删除主键约束:alter table 表名 drop primary key;
同时需要删除非空约束否则非空约束依然存在。

3.唯一约束(unique):代表该数据拥有唯一性。
添加唯一约束:alter table 表名 modify 字段 字段类型 unique;
删除唯一约束:drop index 唯一约束名 on 表名;

4.默认约束(default’默认值’):default’20’所有未写入的该属性数字均为20.
添加默认约束:alter table 表名 modify 字段 字段类型 default’默认值’;
删除默认约束:alter table 表名 modify 字段 字段类型;

5.外键约束(foreign key):由主表输出主键约束的内容至副表。
添加外键约束:alter table 副表名 add constraint 外键名(自己定义;例:name char(15) 只需写成(name)) foreign key(副表需要输入字段)references 主表名(主表需要输出字段);
外键主表及附表引用数据类型必须相同比如均为int等。
删除外键约束:alter table 副表名 drop foreign key 外键名;

主键自增:create eable 数据库名(cid int primary key auto_increment,cname char(15));
自增=i++;cid int =1;(默认值)auto_increment
如果在int手动输入,载入手动输入数字,因为手动输入数字优先级高于默认值。

插入表数据:
insert into 表名 (字段,name) values(字节,’杨梅’);如果是字符需引号

导入数据库脚本:
source 脚本的绝对路径;
例:表script.sql导入。
方式为:mysql> source D:\ws\JAVA\sql\script.sql;
导出表:
备份到一个文件中,如.txt,.doc cmd命令窗口:mysqldump -u 用户名 -p 需要备份的数据库名 >备份的文件的保存路径和文件名 注:如指定的文件不存在,mysql会自动添加一个文件,此命令不能加分号结尾(文件没有备份建数据库操作)
备份数据库:(将数据库test备份) mysqldump -u root -p test>c:/test.txt
备份表格:(备份test数据库下的mytable表格) mysqldump -u root -p test mytable>c:/test.txt
将备份数据导入到数据库:(导回test数据库) mysql -u root -p test
创建临时表:(建立临时表zengchao) create temporary table zengchao(name varchar(10));
从已经有的表中复制表的结构 create table table2 select * from table1 where 1<>1;
复制表 create table table2 select * from table1;
对表重新命名 alter table table1 rename as table2;

单表查询:查询结果来自一张表
select*from 表名 where 字段=”字符”;

查询: SELECT * FROM [表名] WHERE ([条件]); 建立索引:CREATE INDEX [索引文件名] ON [表名] ([字段名]);
多表查询:
select 字段,字段,字段from 表名 where{ (dno>=20 and dno<=30;)相同意义多写法:dno betveen 20 and 30;}
增: insert into 表名 values(0,’测试’); 注:如上语句,表结构中有自动增长的列,也必须为其指定一个值,通常为0 ;
insert into 表名(id,name) values(0,’小明’)注:如上语句,表结构中有自动增长的列,也必须为其指定一个值,通常为0 ;
增加一个字段:alter table tabelName add column fieldName dateType;
增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType; 多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;

删数据: delete from 表名;
delete from 表名 where id=1;
删除结构:
删除表:drop table 表名;
删除表中的列:alter table 表名 drop column 列名;
改: 修改所有:updata 表名 set 列名=’新的值,非数字加单引号’ ;
带条件的修改:updata 表名 set 列名=’新的值,非数字加单引号’ where id=6;
查询: 查询所有的数据:select *from 表名;
带条件的查询: select *from 表名 where 列名=条件值;
Select * from 表名 where 列名 not like(like) ‘字符值’
分页查询:select *from 表名 limit 每页数量 offset 偏移量;
字段的某些固定取值:in(”,”)
查看数据库信息:show databases;
查看表信息:show tables;
查看表的结构:desc 表名;

模糊查询:like 子句
%代表的是任意个字符,代表的是单个字符例:like’j%’,like’j
fi null (参数1,参数2):如果为空,返回参数2,如果不为空返回参数1.
查询某个字段为空只能用is null,is not null(不是空)
例如:fi null (ecom,0)not in (300,500);
查询时间:select now();
查询数据库版本:select version();
查询当前使用的数据库:select database();
使用not null和enum 尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;
使用查询缓存 :
1)查询缓存的工作方式: 第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。
2)配置缓存参数: 变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与 select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询; query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。

打开服务:net start mysql(mysql为配置时,可自定名称)
关闭服务:net stop mysql
从cmd 模式进入MySQL:
(1).mysql -u 用户名 -p 回车>输入正确密码>进入欢迎
(2).mysql -h IP(本机localhost) -u 用户名 -p 回车>输入正确密码>进入欢迎
退出:exit/quit;
修改用户密码:mysqladmin -u 用户名 -p password 新密码

索引:

创建索引 alter table table1 add index ind_id (id); create index ind_id on table1 (id);
create unique index ind_id on table1 (id);//建立唯一性索引
删除索引 drop index idx_id on table1; alter table table1 drop index ind_id;
MySQL会使用索引的操作符号 <,<=,>=,>,=,between,in,不带%或者_开头的like
使用索引的缺点:
1)减慢增删改数据的速度;
2)占用磁盘空间;
3)增加查询优化器的负担;
当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;
分析索引效率 方法:在一般的SQL语句前加上explain;
分析结果的含义:
1)table:表名;
2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的;
3)possible_keys:查询可以利用的索引名;
4)key:实际使用的索引;
5)key_len:索引中被使用部分的长度(字节);
6)ref:显示列名字或者”const”(不明白什么意思);
7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;
8)extra:MySQL的建议;

SQL常用命令使用方法:
(1) 数据记录筛选: sql=”select * from 数据表 where 字段名=字段值 order by 字段名 [desc]” sql=”select * from 数据表 where 字段名 like ‘%字段值%’ order by 字段名 [desc]”
sql=”select * from 数据表 where 字段名 in (‘值1’,’值2’,’值3’)”
sql=”select * from 数据表 where 字段名 between 值1 and 值2”
(2) 更新数据记录: sql=”update 数据表 set 字段名=字段值 where 条件表达式”
(3) 删除数据记录: sql=”delete from 数据表 where 条件表达式”
(4) 添加数据记录: sql=”insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)” sql=”insert into 目标数据表 select * from 源数据表” (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数: AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加 引用以上函数的方法: sql=”select sum(字段名) as 别名 from 数据表 where 条件表达式” set rs=conn.excute(sql) 用 rs(“别名”) 获取统的计值,其它函数运用同上。

0 1