入门的基本语句
MySQL -uusername -uppasswd
当连上服务器后,我们首先面对的是?
答:是库,库由一个或多个,因此我们想要对表/行做操作的话,得先选库
如果不知道有哪些库,想查看所有的库,怎么办?
Show databases
选库的语句:
Use 库名
当选中库以后,我们面对的是表
查看库下面所有的表:show tables
创建一个数据库:create database 数据库名[ charset 字符集]
删除一个数据库;
把数据库改名?
MySQL中,表/列可以改名,database不能改名
保存:要对我们进行的操作保存时,采用下面的语句
先来一个简单的建表语句
Create table stu(
Snum id int
Sname varchar(10)
Engine myisam charset utf8;
修改表名
表中添加数据
看表中数据
清空表数据:
Truncate 表名
Truncate和delect 有区别
Truncate相当与删除表重建一张同样结构的表(就如重新来一张表)
delect是从删除行的数据层面来操作的(就如橡皮擦掉这一行)
查看class表的结构
防止字符乱码:当表中有中文字符时,我们要将客户端的字符设置为gbk显示中文,以防出现乱码
开始真正的建表和插入数据
其实建表的过程就是一个画表头的过程
从术语上讲 这表有4个列
建表的过程,就是一个声明字段的过程
那么建表和列类型有何关系?
分析:在看上的表A4纸是数据的存储空间,而纸的大小是有限的
请问:你给学号留多宽?给姓名刘多宽?。。。、
自然的 姓名如果留的过宽,如果个字符就浪费了 留的过窄则存不下数据
A4纸有限 内存空间也有限
建列是想的能够容纳放置的内容有不想浪费
存储不同的数据,不同的列类型,所占的空间和效率也是不一样的,这就是建立表前列类型的意义
所以 –重点学类型的存储范围和占据的字节关系
建表语法
所谓见表就是一个声明列的过程
寻找一个合适的列类型才是关键
create table 表名(
列名1 列类型 列1参数,
列名2 列类型 列2参数,
......
列名n 列类型 列n参数
)engine myisam/innodb/bdb charset utf8/gbk/....;
create table member(
id int unsigned auto_increment primary key,
username char(20) not null default '',
gender char(1) not null default '',
weight tinyint unsigned not null default 0,
birth date not null default '0000-00-00',
salary decimal(8,2) not null default 0.00,
lastlogin int unsigned not null default 0 # int 时间戳
)engine myisam charset utf8;
修改表的语法
一张表 创建完毕,有了N列,之后还想拿个增加或删除或修改列
Alter table 表名 add 列名称 列类型 列参数;’ [ 新加的列在表的最后]
发现把某一列忘记加了,想要加在指定位置时
Alter table 表名 add 列名称 列类型 列参数 after 指定列名; [新列加在指定列后]
想新建一个列 在最前面,在后面写 first
Alter table 表名 add 列名称 列类型 列参数 first; [新列加在最前面]
删除列:
Alter table表名 drop 列名
修改列类型:
到了X世纪,性别有描述的字数有变化,这时我们想把char(1)改为char(4)
Alter table 表名 modify 列名 新的列声明(新的列类型和列参数)
修改列类型和列名
Alter table 表明change 旧列名 新列名 新类型 新参数
列类型改变了导致数据存不下怎么办?
比如:int改为smallint 数据将会丢失,若在严格模式下将无法更改
先来一个简单的建表语句
增:添加表时要注意:往哪张表添加行;给哪几列添加值;添加什么值。
查看表中内容?
改:改哪张表?你需要改哪几列的值?分别改成什么值?在哪些行生效?
删除:你要删除哪张表?你要删除哪些行?
删除就是指删除整行,不存在删除一行中的某几列(相当于该)
查找:select * from 表名where 表达式; 选择满足表达式的表中的数据
上述取出的是表中所有人的名字和工资(Where 1 可以不要)
取出id大于3的所有行
取部分行和部分列