@(笔记)[MarkDown|数据库|我的博客]
8.8
在 Windows 命令提示符下运行:
启动: net start MySQL
停止: net stop MySQL
卸载: sc delete MySQL
参数 | 描述 |
---|---|
-D, –fatabase = name | 打开指定数据库 |
–delimiter = name | 指定分隔符 |
-h, –host = name | 服务器名字 |
-p, –password[=name] | 密码 |
-P, –port=# | 端口号 |
–prompt=name | 设置提示符 |
-u, –user=name | 用户名 |
-V, –version | 输出版本信息并退出 |
如果登录本地服务器,则可以不写端口号和IP地址
mysql -h 主机名 -u 用户名 -p (回车)
mysql -D 选择的数据库名 -h 主机名 -u 用户名 -p
mysql -uroot - p –prompt 提示符
--prompt
后面跟的\h
参数表示服务器名字
prompt
命令mysql > prompt 提示符
提示符从原来的loaclhost
变成了mysql>
- 或者 \R
mysql > \R 提示符
参看mysql的命令知道:
prompt (\R) Change your mysql prompt.
可以使用\R
代替prompt
我们也可以使用提示符参数来增加提示符信息
参数 | 描述 |
---|---|
\D | 完整的日期 |
\d | 当前数据库 |
\h | 服务器名称 |
\u | 当前用户 |
使用\d
参数时,必须使用use 数据库名
切换到指定数据库
不然会显示为null
SELECT VERSION();
SELECT NOW();
SELECT USER();
mysqladmin -u root -p password 新密码
执行后提示输入旧密码完成密码修改, 当旧密码为空时直接按回车键确认即可.
MySQL也可以全程使用小写
(为了方便查看,本文中全部使用小写命令)
show databases;
create{database| schema}
[if not exists] db_name –如果不存在db_name
这个数据库就创建db_name数据库
[defalut] character set [=] charset_name; –设置编码格式
mysqladmin -u root -p create demo_db
drop {database | schema} [if exists] db_name;
use 数据库名称;
显示当前选择的数据库
select database();
数据类型指的是列,存储过程参数,表达式和局部变量的数据特征,
他决定了数据的存储格式,代表了不同的信心类型
数据类型 | 字节 |
---|---|
tinyint | 1 |
smallint | 2 |
mediumit | 3 |
int | 4 |
bigint | 8 |
数据类型 | 描述 |
---|---|
float[(m,d)] | m是数字中位数,d是小数位数 |
double[(m,d)] | 如果省略m和d,根据硬件允许的限制来保存值 |
列类型 | 存储需求 | 描述 |
---|---|---|
year | 1 | 默认存储4位数字 |
time | 3 | -8385959到8385959 |
date | 3 | 1000年1月1日到9999年12月31号之间的日期 |
datetime | 8 | 1000年1月1号0点0分0秒到9999年12月31号59点59分59秒 |
datestamp | 4 | 时间戳:1970.1.1到2037年12.31 |
列类型 | 描述 |
---|---|
char(m) | (定长) m个字节,0<=m<=255 |
varchar(m) | (变长) L+1个字节,L<=m且0<=m<=65535 |
tinytext | L+1个字节,L<2的8次方 |
text | L+2个字节,L<2的16次方 |
mediumtext | L+3个字节,L<2的24次方 |
longtext | L+4个字节,L<2的32次方 |
enum(‘value1’,’value2’,…) | 1或2个字节,取决于枚举值的个数(最多65535个值) |
set(‘value1’,’value2’,…) | (集合) 1,2,3,4或8个字节,取决于set成员的数目(最多64个成员) |
数据表(表)是数据库中最重要的组成部分之一,起其他对象的基础
表 :在关系型数据库中最基本的数据模型,由行和列组成的一张二维表
行 :记录 记录一个对象的所有的属性
列 :字段 描述了数据的一个特性
create table [if not exists] table_name(
cloumn_name1 data_type,
cloumn_name2 data_type,
...
);
最后一条语句不需要加,
;
create table tb1(
username varchar(20),
age tinyint unsigned, --无符号
salary float(8,2) unsigned
);
以创建 students 表为例, 表中将存放 学号(id)、姓名(name)、性别(sex)、年龄(age)、联系电话(tel) 这些内容:
create table students
(
id int unsigned not null auto_increment primary key,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null,
tel char(13) null default '-'
);
(提示: 1.如果连接远程主机请加上 -h 指令; 2. createtable.sql 文件若不在当前工作目录下需指定文件的完整路径。)
语句解说:
括号内声明了5列内容, id、name、sex、age、tel为每列的名称, 后面跟的是数据类型描述, 列与列的描述之间用逗号(,)隔开;
以 “id int unsigned not null auto_increment primary key” 行进行介绍:
show tables [from db_name] [like ‘pattern’ | where expr];
如果直接写show tables
会显示当前所选择的数据库中的所有数据表
如果加上了from
,会显示特定数据库中的表
但是当前所在数据库的位置没有改变
show columns from tb_name;
或者
describe (desc) tb_name;
insert [into] tb_name [(col_name1,col_name2,…)] values(val1,val2,..);
insert into students values
(1,'张三','男',25,'123467890'),
(2,'李四','男',22,'0987654321'),
(3,'王五','男',20,'0984324321'),
(4,'赵六','男',29,'0944654321');
当只需要插入部分数据,或者不按照顺序插入
insert into students (name,sex,age) values(‘田七’,’男’,30);
update students set age = 50 where name = ‘张三’;
delete from students where id > 1; –删除ID大于1的所有记录
delete from students where id = 10 limit 1 –限制删除掉1条id=10的记录
delete from students; –删除全表记录
drop table tablename1, tablename2, ….; –删除多个表
alter table t1 rename t2;
alter table tablename modify int(10) unsigned auto_increment primary key not null;
alter table tablename alter id default 0;
alter table tablename add primary key(id);
alter table tablename drop primary key;
或者
drop primary key on tablename;
alter table tablename ENGINE = MyISAM(InnoDB);
alter table tablename add column single char(1);
或者
alter table tablename add field int unsigned not null;
mysqldump -u root -p demo_db students > C:\Users\CodeA\Desktop\abc.sql
进入mysql
create database school;
use school;
source school.sql;
mysqldump –databases db1 db2 >db1.db2.sql;