你的位置:首页 > 数据库

[数据库]Mysql数据库笔记


出错记录:
1、mysql服务启动不了,进程意外终止 1067
   错误显示:can not connect to mysql server on local hosts(1061)
   解决方法:原来是我傻逼把原来的MySQL数据库给删掉了


2、服务已经启动,但是输入密码时 进不去
错误显示:ERROR 1045 <28000>:Access denied for user'root'@'locahost'<using password:YES>
解决方法:http://blog.sina.com.cn/s/blog_759a5a7c01017dj0.html

3、

默认端口号:3306

把mysql的bin目录添加到环境变量中就可以在任意目录下都可以打开bin目录了。


之前看到的root@localhost这些是因为别人改了提示符:
mysql>prompt \u@ \h \d>
\u表示当前用户 \h表示服务器名称 \d表示当前数据库



MySQL语句规范:


关键字和函数名称全部大写;
数据库名称、表的名称、字段的名称全部小写;
SQL语句必须以分好结尾。

加中括号表示可以省略
 

显示当前版本;
mysql>SELECT VERSION();
显示当前时间;
mysql>SELECT NOW();
显示当前用户;
mysql>SELECT USER();


修改原始密码:

打开命令提示符界面, 执行命令: mysqladmin -u root -p password 新密码
执行后提示输入旧密码完成密码修改, 当旧密码为空时直接按回车键确认即可。



开始:


//创建数据库:
MySQL>CREATE DATABASE (IF NOT EXISTS) case;
//显示已经存在的数据库;
MySQL>SH0W DATABASES;
//重命名数据库名称
先关闭数据库,然后找到文件夹所在目录,更改文件夹名称。
//显示某个数据库;
MySQL>SHOW CREATE DATABASE case;

//更改数据库编码为utf8;
MySQL>ALTER DATABASE case CHATACTER SET=utf8;

//删除数据库:
MySQL>DROP DATABASE case;


修改和删除

修改默认值:
ALTER TABLE TB_NAME ALTER 字段名 SET DEFAULT 默认值;
ALTER TABLE TB_NAME ALTER 字段名 DROP DEFAULT ;

修改表名
ALTER TABLE 表名 RENAME TO 新名;
修改字段名
ALTER TABLE 表名 CHANGE 旧字段 新字段 新字段数据类型
修改字段数据类型
ALTER 表名 MODIFY 属性名 数据类型
增加字段
ALTER TABLE 表名 ADD 字段1 字段1的条件 [FIRST | AFTER 字段2];
删除字段
ALTER TABLE 表名 DROP 字段;
修改字段的排列位置:
ALTER TABLE 表名 MODIFY 字段1 字段1数据类型 FIRST|AFTER 字段2;
更改表的存储引擎:
ALTER TABLE 表名 ENGINE=引擎名
添加主键约束:
ALTER TABLE 表名 ADD PRIMARY KEY (外键名)
删除外键约束:
ALTER TABLE 表名 DROP FOREIGN KEY (外键别名)
修改数据表的名称:
ALTER  TABLE table_name RENAME TO new_table_name
删除记录:
delete from users where id=1;
修改记录:
update 表名 set 字段=新值 where 条件;
update users set id=1 whers sex=1;

表字段的修改:
增加字段
ALTER table tb_name ADD column_name 属性 位置;           //增加一个字段,默认为空
alter table user add COLUMN new2 VARCHAR(20) NOT NULL;  //增加一个字段,默认不能为空
删除字段
alter table user DROP COLUMN new2;                //删除一个字段

alter table user DROP column1,column2;                        //删除多列

修改一个字段
alter table user MODIFY new1 VARCHAR(10);            //修改一个字段的类型
alter table user CHANGE new1 new4 int;              //修改一个字段的名称,此时一定要重新指定该字段的类型


第二章:
1、数据类型:整型:
TINYINT -2^7->2^7-1
SMALLINT -2^15->2^15-1
MEDIUMINT -2^23->2^23-1
INT -2^31->2^31-1
BIGINT -2^63->2^63-1

浮点型:
FLOAT[(M,D)] m代表总位数,d代表小数点后位数
DOUBLE[(M,D)]

时间日期型:(了解)
YEAR 1个字节
TIME 3
DATE 3
DATETIME 8
TIMESTAMP 4

字符型:
CHAR(M) 0<=M<=255
VARCHAR(M)
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM('value1,'value2'...)
SET('value1','value2',,,)

2、数据表的操作
打开数据库:
USE test(数据库名称)
 
创建数据表:
CREATE TABLE (IF NOT EXISTS) table_name<数据表名字>(column_name<根据项目大小确定的列名>data_type<数据类型>,..)

mysql>USE TEST;
>CREATE TABLE tb1(
>username VARCHAR(20),
>age TINYINT UNSIGNED,<unsigned意思是不要负数>
>salary FLOAT(8,2) UNSIGNED <float(8,2)的意思是总共有8位数,其中小数点后有2位)>
>);

查看数据表列表
SHOW TABLES FROM test;

查看数据表结构
SHOW COLUMNS FROM TB1;

插入记录INSERT
INSERT [INTO] tb1_name [(col_name,,,)] VALUES(val,,,)
INSERT TB1 (username ,salary) VALUES ('tom',26,919.3);
插入的也可以是算式比如:33-2 或者函数式:MD5('342')
也可以一次插入多条记录,记录间用,分开就行。


记录查找SELECT
SELECT * FROM TB1_NAME




3、空值与非空


NULL 字段值可以为空  NOT NULL 字段禁止为空

创建表,设定某些量空与非空
>CREATE TABLE TB2(
>username VARCHAR(20) NOT NULL,
>age TINYINT UNSIGNED NULL,
>);

>INSERT TB2 VALUES(NULL,20);
<将报错说username不可为空>




4、自动编号(AUTO_INCREMENT)不能用char类型


自动编号,且需与主键组合使用
默认情况下,起始值为1,每次的增量为1;





5、主键约束(PRIMARY KEY)


每张数据表只存在一个主键
主键保证记录的唯一性
主键自动为not null

多个字段联合主键:
PRIMARY KEY(username,age);

>CREATE TABLE TB2(
>id SMALLINT UNSIGNED  PRIMARY KEY AUTO_INCREMENT,

AUTO_INCREMENT(自动递增)必须和PRIMARY KRY一起使用,而PRIMARY KEY则不一定要和AUTO_INCREMENT一起使用

>username VARCHAR(20) NOT NULL,
>);

>SHOW COLUMNS FROM TB3;





6、唯一约束(UNIQUE KEY)


唯一约束
唯一约束可以保证记录的唯一性
唯一约束的字段可以为NULL
每张数据表可以存在多个唯一约束
与主键的区别:一张数据表只能有一个主键,而UNIQUE KEY可以有多个可以NULL
>CREATE TABLE TB4(
>id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,<自动编号字段>
>username VARCHAR(20) NOT NULL UNIQUE KEY,
>age TINYINT UNSIGNED
>);

插入记录:INSERT TB4(username,age) VALUES('TOM',23);
当再次写入同样的记录时,将提示错误,因为username用了unique约束。可想而知这个约束在数据表里可以有多个。



7、默认约束(DEFAULT)



默认值
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
>CREATE TABLE TB5(
>id SAMLLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
>username VARCHAR(20) NOT NULL UNIQUE KEY,
>sex ENUM('1','2','3') DEFAULT '3'
>);

验证:
INSERT TB5(username)VALUES('TOM');
将发现自动给sex赋值3了。



8、外键约束


要求:
表与表之间的链接
父表和子表必须使用相同的储存引擎(InnoDB),而禁止使用临时表:
外键列和参照列必须具有相识的数据类型。其中数字的长度或是否有符号位必须相同;而字符     的长度则可以不同
外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

CREATE TABLE provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
查看数据表的引擎:show create table provinces;
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARU KEY AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
//添加省份的话可以不用添加字段,只要添加关系表省份的编号就行
pid SMALLINT UNSIGNED, 
FOREIGN KEY(pid)REFERENCES provinces(id)
);

查看索引:SHOW INDEXES FROM provinces\G;
SHOW INDEXES FROM users\G;

外键约束的参数:

CASCADE:从父表删除或更新且自动删除或更新字表中匹配的行
SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL,如果使用该选项,必须保证 子表列没有指定NOT NULL
TESTRICT(约束、限制):拒绝对父表的删除或更新操作
NO ACTION:标准的SQL的关键字,在MySQL中RESTRICT相同。


为自动编号的字段赋值

可以书写成default 或者null
创建表:
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
password VARCHAR(32) NOT NULL DEFAULT 123,
age TINYINT UNSIGNED NOT NULL,
sex BOOLEAN
);
插入记录:
INSERT users VALUES(NULL,'Jack',159357,20,1);




9、










贵州旅游多少钱贵州旅游攻略大全贵州旅游攻略自助游贵州旅游报价价格贵州旅游景点推荐从化流溪河公园2015花海音乐节几号开始?流溪河花海音乐节开始时间? 从化五一哪里有花展?五一去从化哪里赏花? 2015从化流溪河葵花节要门票吗?流溪河森林公园葵花节门票价格? 2015从化流溪河葵花节时间?流溪河森林公园葵花节到什么时候? 东莞动物园门票团购多少钱?东莞香市动物园团购电话? 顶级酒店品牌寓所“四季汇”亮相上海小陆家嘴 普宁到望天湖自驾车路线?普宁到白塔望天湖多少车程? 揭西到白塔望天湖多远?揭西到望天湖开车怎么去? 普陀寺素斋好吃吗?有那些? 鼓浪屿特产有什么? 福州知名教堂大巡礼 鼓浪屿有什么美食? 内地手机卡在马尔代夫的漫游费怎么收? 泰国普吉岛怎么去?有几种方式? 去泰国旅游怎么兑换泰铢?到哪里兑换? 曼谷丹嫩沙杜艾水上市場开放时间是什么时候? IDT71V3559S75BQ Datasheet IDT71V3559S75BQ Datasheet IDT72V3650L6BB8 Datasheet IDT72V3650L6BB8 Datasheet IDT5V991A-2J Datasheet IDT5V991A-2J Datasheet 佳木斯香港两日游 佳木斯香港两日游 佳木斯香港两日游 黑龙江香港两日游 黑龙江香港两日游 黑龙江香港两日游 四平跟团港澳五日游价格 四平跟团港澳五日游价格 四平跟团港澳五日游价格