mysql学习笔记
1.启动mysql的dos命令
启动:net start mysql
关闭:net stop mysql
2.连接退出
mysql - h 主机地址 -u 用户名 p 用户密码
-前均有空格,h代表进入的服务器(本机可以不写),u代表用户名(用户名默认为root),p代表密码(默认密码为p0).mysql提示符是mysql>
退出:quit 或者 exit
3.修改密码
Set password=password('新密码') #mysql命令
mysqladmin -u 用户名-p 原密码 password 新密码 /*dos命令,不能进入mysql中执行*/
4.注解
单行#
多行/* */
5.mysql命令
放弃输入\c
显示命令清单\h
退出mysql \q
查看mysql服务器状态信息 \s
6.数据库操作
Show databases; /*显示数据库列表*/
Create database 库名; /*建库*/
Drop [if exists] database 库名; /*删除数据库*/
Use 数据库名; /*选定使用的数据库*/
7.表格数据的操作
Show tables; /*查看数据库中的表*/
Create table表名(字段名 类型 [约束条件][,字段2.。。]) /* 建表*/
describe表名; 或desc 表名;/*显示数据表的结构*/
Drop [if exists] table 表名; /*删除数据表*/
Delete from 表名; /*清空数据表*/
Select * from表名; /*显示表中的记录*/
Insert into 表名(字段名1,字段名2.。。) values (值1,值2.。。。) /*向表中的插入指定字段的数据*/
Update 表名 set 字段名=值 [where 条件] /*修改表中的数据*/
alter table 旧表名 rename 新表名 或者 rename table 表名 to 新名 /*修改表名*/
alter table 表名 modify 字段名 数据类型 /*修改字段的数据类型*/
alter table 表名 change 旧字段名 新字段名 新数据类型 /*修改字段名*/
alter table 表名 modify 字段名 数据类型 default 默认值; /*修改字段的默认值*/
alter table 表名 add 新字段名 数据类型 [约束条件] [after 字段2]/[first] /*添加字段,默认添加在最后一个字段后面*/
alter table 表名 drop 字段名 /*删除字段*/
alter table 表名 modify 字段1 数据类型 [after 字段2]/[first]; /*修改字段的排列位置*/
8.操作技巧
1如果你打命令时,回车后发现忘记加分号,无须重打一遍命令,只要打个英语状态的分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志。
2可以使用光标上下键调出以前的命令。
3.如果你的sql命令执行后,报错了。你可以在错误信息中找near 单词,它会告诉你错误在什么的附近。
9.约束条件: 非空约束,主键约束 ,外键约束, 检查性约束,唯一约束,默认约束
添加自增长:alter table 表名 modify 字段名 数据类型 auto_increment;
删除自增长约束:alter table 表名 modify 主键名 类型;
添加主键约束:alter table 表名 add primary key (字段名);
alter table 表名 add column 字段名 字段类型 auto_increment PRIMARY KEY;/*通过添加字段,添加主键*/
删除主键约束(如果主键有自增长,要先删除自增长,才能删除主键):alter table 表名 drop primary key;
添加唯一约束: alter table 表名 add unique [key] (字段名);
删除唯一约束:alter table 表名 drop index 字段名;
添加外键约束: alter table 表名 add constraint 外键约束匿名 foreign key (外键字段) references 被引用的表的表名(被引用的子段的字段名);
删除外键:alter table 表名 drop foreign key 外键匿名;
添加非空约束:alter table 表名 modify 字段名 字段类型 not null;
删除非空约束:alter table 表名 modify 字段名 字段类型 [null];
添加默认约束:alter table 表名 modify 字段名 字段类型 default '默认值';
删除默认约束:alter table 表名 modify 字段名 字段类型 [default null];
alter table 表名 alter [column] 字段名 set default 默认值; /*修改字段的默认值*/
create view 视图名 as sql结果;/*创建视图*/
10.-数据备份和恢复
Select * from 表名 into outfile “D:/myTable.txt”; /*到出数据表的数据到指定文件中*/
Source D:/mydb.sql /*将外部的sql文件导入到数据库中*/
Show create table 表名; /*查看表的创建,可以据此复制出sql命令,查看外键匿名(删除外键使使用)*/
mysqldump -uroot –p123 test > D:/a.sql 在dos 窗口下,输入该命令,test是要导出的数据库的名字。
mysqldump -uroot –p123 test t1 > D:/a.sql在dos 窗口下,输入该命令,导出test数据库中的t1表。
默认情况下:mysql 对导入文件大小有限制的,最大为2M,所以当文件很大时候,无法直接导入
解决办法:1.在php.ini中修改相关参数:
影响mysql导入文件大小的参数有三个:
memory_limit=128M,upload_max_filesize=2M,post_max_size=8M
修改upload_max_filesize=200
M 这里修改满足你需要的大小,可以同时修改其他两项memory_limit=250M post_max_size=200M这样就可以导入200M以下的.sql文件了。
11.外键
含有外键的表A,外键字段的数据来自表B,形成依赖。因此表A的外键字段只能使用表B中相应字段含有的数据。
外键关系是由含有外键字段的表A主动建立的,因此删除表时,应当先删除表A,再删除被引用的表。体现了安全性和完整性。
外键建立的条件
表A和表B中建立外键关系的字段的类型必须相同,若A表的C字段为外键,那么B中的D字段的类型必须和C字段相同,且D字段约束条件为主键或unique。
含有外键的表是从表,从表的数据依赖于主表。
从表里的外键的值,只能来自于主表相应的字段的值。主表中相应的字段不存在的值,从表的外键也不能有,也无法有,因为插不进去这样的数据。(从表的操作受到限制)
在删除数据表的时候,只能先删除从表(含有外键的表),才能删除主表,因为外键关系是由从表发出的,并且从表的数据来自于主表。
不能在控制台输入中文:原因是无法切换输入法
第一种:Ctrl+空格键 可以在dos中切换中英文输入法。
第二种:设置window系统默认的输入语言为搜狗输入法。然后重启dos 窗口,就可以输入中文了。
Dos窗口点击右键—》属性 ;可以查看当前窗口的编码及对窗口外观的设置。
Dos窗口点击右键—》默认值 ;可以查看和设置当前窗口的编码,对窗口外观的设置。
能在mysql客户端输入中文,但是不能插入到表中。
这个数据库和表的编码有关。因此就要修改表的编码和数据库的编码。具体为:修改表格的编码,修改相应字段的编码(表格无数据)。注意:dos窗口可能只支持mysql默认编码为gbk时,才能在dos窗口插入中文。
mysql> alter table users character set GBK; /*更改表格的字符集为GBK*/
mysql> alter table users modify username char(20) character set gbk;/*更改字段的字符集*/
@@关于修改mysql配置文件,实现中文支持的方法:
MySQL\MySQL Server 5.5\my.ini 文件中的
[mysql]
default-character-set=utf8
# The default character set that will be used when a new schema or table is
# created and no character set is defined
character-set-server=utf8
注意:修改后要重启mysql,不是重启dos窗口。(最好是两者都重启)。这种修改方式不会改变已经存在的数据库和表的编码。因此就需要重新建这些数据库和表。
@@其他:
A:重装数据库
B:执行bin包下的MySQLInstanceConfig.exe程序,重新设置配置。需要重启mysql和dos窗口,否则只有Server characterset:和Db characterset发生改变。
C:在创建数据库和表时指定字符集:create database yourDB character set gbk;
create table yourtable(id int) character set gbk;
注意:set names gbk;仅对服务器不重启时有效,改变所有的数据库的编码,但是只是暂时的,原有的编码方式依然保留。
12.修改端口号
MySQL\MySQL Server 5.5\my.ini 文件中的
[client]
port=3305
[mysql]
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3305