//安装mysql服务端:
sudo apt-get install mysql-server
//安装mysql客户端:
sudo apt-get install mysql-client
//安装mysql的C语言开发接口:
sudo apt-get install libmysqlclient-dev
service mysql start
![2018-08-15 14-13-49 的屏幕截图](/home/lala/图片/2018-08-15 14-13-49 的屏幕截图.png)
![2018-08-15 14-13-37 的屏幕截图](/home/lala/图片/2018-08-15 14-13-37 的屏幕截图.png)
sudo mysql -uroot -p
sudo:切换到root用户下
-p:输入密码
-P:默认端口号 3306
![2018-08-15 14-16-12 的屏幕截图](/home/lala/图片/2018-08-15 14-16-12 的屏幕截图.png)
show databases;
//切记一定要加入;表示这句话结束了
//这里的databases是复数!!!
![2018-08-15 14-18-30 的屏幕截图](/home/lala/图片/2018-08-15 14-18-30 的屏幕截图.png)
use 数据库名;
//一定要使用完再添加东西!!!
![2018-08-15 14-20-34 的屏幕截图](/home/lala/图片/2018-08-15 14-20-34 的屏幕截图.png)
create database 库名;
![2018-08-15 14-24-08 的屏幕截图](/home/lala/图片/2018-08-15 14-24-08 的屏幕截图.png)
create table 表名(字段设定列表);
![2018-08-15 14-26-47 的屏幕截图](/home/lala/图片/2018-08-15 14-26-47 的屏幕截图.png)
show tables;
![2018-08-15 14-28-02 的屏幕截图](/home/lala/图片/2018-08-15 14-28-02 的屏幕截图.png)
describe 表名;
show columns from 表名;
![2018-08-15 14-29-07 的屏幕截图](/home/lala/图片/2018-08-15 14-29-07 的屏幕截图.png)
insert into table1(username,password) values('leizhimin','lavasoft');
commit;
table1:是我刚才建的一个表
username:表里面的其中一个字段
password:表里面的其中一个字段
values:后面括号里面的东西是添加的东西,和字段对应
commit:提交
SQL语言可以分为DDL,DML,DCL三大类。
提交数据有三种类型:显示提交(commit),隐式提交(SQL命令间接完成),自动提交(把AUTOCOMMIT设置为ON)
DDL语句是自带commit的,而执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动发出commit命令,使未提交的DML命令提交。另外,可以知道,查询是可以不带commit的。
select * from 表名;
![2018-08-15 14-51-02 的屏幕截图](/home/lala/图片/2018-08-15 14-51-02 的屏幕截图.png)
update table1 set password='hahahaha' where username='lalala';
commit;
table1:表名
password:要改数据的字段名称
'hahahaha':要更改的数据
username:要改数据的信息(这里是名称)
'lalala':要改数据的信息字段的名称
![2018-08-15 15-03-37 的屏幕截图](/home/lala/图片/2018-08-15 15-03-37 的屏幕截图.png)
//添加一个字段(一列)
alter table 表名 add column 添加的字段名称 类型;
//添加多个字段(多列)
alter table 表名 add column 添加的字段名称 类型,add column 添加的字段名称 类型;
![2018-08-15 15-25-12 的屏幕截图](/home/lala/图片/2018-08-15 15-25-12 的屏幕截图.png)
![2018-08-15 15-26-34 的屏幕截图](/home/lala/图片/2018-08-15 15-26-34 的屏幕截图.png)
delete from table1 where username='lalala';
commit;
![2018-08-15 15-12-58 的屏幕截图](/home/lala/图片/2018-08-15 15-12-58 的屏幕截图.png)
drop table 表名;
![2018-08-15 14-31-55 的屏幕截图](/home/lala/图片/2018-08-15 14-31-55 的屏幕截图.png)
drop database name;
![2018-08-15 14-32-57 的屏幕截图](/home/lala/图片/2018-08-15 14-32-57 的屏幕截图.png)
exit
![2018-08-15 14-36-29 的屏幕截图](/home/lala/图片/2018-08-15 14-36-29 的屏幕截图.png)
select now();
![2018-08-15 15-29-32 的屏幕截图](/home/lala/图片/2018-08-15 15-29-32 的屏幕截图.png)
select user();
![2018-08-15 15-30-18 的屏幕截图](/home/lala/图片/2018-08-15 15-30-18 的屏幕截图.png)
select database();
![2018-08-15 15-31-14 的屏幕截图](/home/lala/图片/2018-08-15 15-31-14 的屏幕截图.png)
//切记一定是在终端下运行!!!不是在mysql内!!
sudo vim /etc/mysql/debian.cnf //查看
sudo cat /etc/mysql/debian.cnf //打印
![2018-08-15 19-52-17 的屏幕截图](/home/lala/图片/2018-08-15 19-52-17 的屏幕截图.png)
如果账号密码写的是之前我以为的就会这样:
![2018-08-15 19-53-21 的屏幕截图](/home/lala/图片/2018-08-15 19-53-21 的屏幕截图.png)
![2018-08-15 19-53-03 的屏幕截图](/home/lala/图片/2018-08-15 19-53-03 的屏幕截图.png)
改过之后:
![2018-08-15 19-54-36 的屏幕截图](/home/lala/图片/2018-08-15 19-54-36 的屏幕截图.png)
![2018-08-15 19-54-48 的屏幕截图](/home/lala/图片/2018-08-15 19-54-48 的屏幕截图.png)
alter table 表名 Add column 字段的名称(新建的) 类型 ... AFTER 字段(已经有的);
//这句话意思是在哪个字段后面添加
eg:
alter table student Add column id int not NULL default 0 AFTER no;
![2018-08-15 21-57-56 的屏幕截图](/home/lala/图片/2018-08-15 21-57-56 的屏幕截图.png)
alter table 表名 drop column 字段;
![2018-08-15 21-59-34 的屏幕截图](/home/lala/图片/2018-08-15 21-59-34 的屏幕截图.png)
alter table 表名 change 想要换的字段名 想要换的字段名 当时创建自断的时候给他的特性全写 after 被换的字段名;
eg:
alter table studnet change s_name s_name char(20) after no;
![2018-08-15 22-05-11 的屏幕截图](/home/lala/图片/2018-08-15 22-05-11 的屏幕截图.png)
我将一个字段设置为auto_increment,但是程序会报错,错误原因是:
![2018-08-15 22-19-11 的屏幕截图](/home/lala/图片/2018-08-15 22-19-11 的屏幕截图.png)
注意:
1.自增字段必须是primary key!
2.出错的地方在这:
![2018-08-15 22-20-44 的屏幕截图](/home/lala/图片/2018-08-15 22-20-44 的屏幕截图.png)
改为:
![2018-08-15 22-21-49 的屏幕截图](/home/lala/图片/2018-08-15 22-21-49 的屏幕截图.png)
结果为:
![2018-08-15 22-22-14 的屏幕截图](/home/lala/图片/2018-08-15 22-22-14 的屏幕截图.png)
//主键
alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);
//增加一个新列
alter table t2 add d timestamp;
alter table infos add ex tinyint not null default '0';
//删除列
alter table t2 drop column c;
//重命名列
alter table t1 change a b integer;
//改变列的类型
alter table t1 change b b bigint not null;
alter table infos change list list tinyint not null default '0';
//重命名表
alter table t1 rename t2;
加索引
mysql> alter table tablename change depno depno int(5) not null;
mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]);
mysql> alter table tablename add index emp_name (name);
加主关键字的索引
mysql> alter table tablename add primary key(id);
加唯一限制条件的索引
mysql> alter table tablename add unique emp_name2(cardnumber);
删除某个索引
mysql>alter table tablename drop index emp_name;
修改表:
增加字段:
mysql> ALTER TABLE table_name ADD field_name field_type;
修改原字段名称及类型:
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
删除字段:
mysql> ALTER TABLE table_name DROP field_name;