实时搜索: mysql 如何创建表

mysql 如何创建表

630条评论 5902人喜欢 3512次阅读 404人点赞
写出如下的几条命令,要求:在mysql中创建数据库XDGL,在此数据库下创建student表的命令,要求student表包括sno,sname,ssex,sage,sdept字段。并向student表插入任意一条数据。 , 用sql语句创建表时,给表字段默认值出错。
比如:mssql中
CREATE TABLE dnt_forums(
aa int NOT NULL DEFAULT (''),
bb date NOT NULL DEFAULT (getdate()),
cc char(50) NOT NUL...

写出如下的几条命令,要求:在mysql中创建数据库XDGL,在此数据库下创建student表的: create database XDGL;

create table XDGL.student(
sno bigint(20),
snmae varchar(20),
ssex tinyint(1),   -- 也可以考虑使用枚举
sage int(5),
sdept varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into XDGL.student values(1,'test',0,22,'计算机');

如何在MySQL中利用数据库表创建视图: 为了不影响其他的数据库表,新建一张数据库表t_worker_info,
create table t_worker_info(
id int(8) primary key not null auto_increment,
w_id int(10) not null,
w_name varchar(20) not null,
w_age int(3),
w_sex varchar(10),
w_birth varchar(20)
);
创建t_worker_info后,查看一下数据结构
desc t_worker_info;
双击选中的数据库,在Views鼠标右键“Create View...”,打开编辑窗口,并在窗口中输入代码
CREATE VIEW `view_worker_info` AS
SELECT * FROM t_worker_info;
查看创建视图的基本信息,利用desc或describe语句,代码如下:
desc view_worker_info;
查看视图信息,如存储引擎、数据长度等,如果上述指标都为null,说明视图是虚表,代码如下:
show table status like 'view_worker_info';
查看创建视图的详细信息,需要用到show create view 视图名,
show create view view_worker_info;

如何将mysql的表名和列名转换为大写: 刚开始使用 mysql 的时候,刚开始是想要区分列名大小写的问题,在网上看到很多办法, 于是就 1、 linux 下 mysql 安装完后是默认:区分表名的大小写,不区分列名的大小写; 2、 2、 root 帐号登录后, 用 在/etc/my.cnf 中的[mysqld]后添加添加 lower_case_table_names=1, 重启 MYSQL 服务,这时已设置成功:不区分表名的大小写; lower_case_table_names 参数详解: lower_case_table_names = 0 其中 0:区分大小写,1:不区分大小写 MySQL 在 Linux 下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的; 4、变量名也是严格区分大小写的; MySQL 在 Windows 下都不区分大小写。 在 my.ini 中的[mysqld]后添加添加 lower_case_table_names=1,重启 MYSQL 服务, 这时已设置成功:不区分表名的大小写; lower_case_table_names 参数详解: lower_case_table_names = 0 其中 0:区分大小写,1:不区分大小写 3、如果想在查询时区分字段值的大小写,则:字段值需要设置 BINARY 属性,设置的方 法有多种: A、 创建时设置: CREATE TABLE T( A VARCHAR(10) BINARY ); B、 使用 alter 修改: ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY; C、mysql table editor 中直接勾选 BINARY 项。 乱码解决,更详细的看下字符集设置这篇 在[mysqld] 下增加下句 default-character-set=utf8 但是经过本人的实践之后如果按此方法修改后表名的区分大小写指的是你创建一 个表之后,它保留你创建时候的表名的原貌,但是在系统后台存储的时候此表是不 区分大小写的,也就是说在创建一个表名仅大小写不一样的表是不可以的。 例如; 在修改为表名区分大小写之后,也就是 lower_case_table_names = 0 (不管是在哪个系 统下)在 mysql 命令行界面下输入 CREATE TABLE TEST ( Id int not null primary key, Name varchar not null ); 之后你执行 show tables; 会包含一个 TEST 表,表名保留原来的大小写, 你如果输入 show tables like ‘t%’;是查不到这个新建的表的; 之后你在创建另外一个表, CREATE TABLE test ( Id int not null primary key, Name varchar not null ); 系统会提示你,表 test 已经存在,不允许创建。

mysql workbench怎么创建数据表关联: 初学数据库,记录一下所学的知识。我用的MySQL数据库,使用MySQL Workbench管理。下面简单介绍一下如何使用MySQL Workbench建立数据库,建立新的表,为表添加数据。

点击上图中的“加号”图标,新建一个连接,

如上图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击“OK”,连接就建立好了,建立完成后,会出现一个长方形的框框,双击它,出现下图所示页面

点击图中的红圈里的按钮,新建一个Schema,即数据库(个人理解。。),修改一下Name 的值,如 mydatabase ,点击apply,再点apply,然后点finish 如下图所示

数据库就建好了!!! 如图

接下来就是如何创建表,

首先要 !!!双击!!! 一下刚刚建立好的数据库mydatabase,然后再创建表,不然会出错,右键点击Tables 然后点击Create new tables ,填写表名,以及表列的信息,之后点击 apply ,一张表就建完了

PK: primary key (column is part of a pk) 主键

NN: not null (column is nullable) 是否为空

-UQ: unique (column is part of a unique key) 外键

AI: auto increment (the column is auto incremented when rows are inserted) 自动增加

BIN: binary (if dt is a blob or similar, this indicates that is binary data, rather than text) 二进制

UN: unsigned (for integer types, see docs: “10.2. Numeric Types”)

- ZF: zero fill (rather a display related flag, see docs: “10.2. Numeric Types”)

出现如下页面

接下来向建好的tb_student表中添加数据

右键点击tb_student,再点击select rows limit 1000

在mysql workbench中向数据库中的表中添加数据大致就是这个样子。

mysql表字段默认值: aa 是 int 类型,默认值也得是整型,并且default后边不要()括号

bb date类型不支持使用系统默认值,改成timestamp,能过now()取系统时间

cc 已经不允许为空(not null)所以不能默认为 null ,可以改成空字符串

CREATE TABLE dnt_forums(
aa int NOT NULL DEFAULT 2,
bb timestamp NOT NULL DEFAULT now(),
cc char(50) NOT NULL DEFAULT ''
);

MySQL中如何用COMMIT保存或删除表?: 看他们网上的,写得都是千篇一律,同时,好多也写得不是很好,下面是我自己总结的有关mysql的使用细节,也是我在学习过程中的一些记录吧,希望对你有点帮助,后面有关存储过程等相关操作还没有总结好,下次总结好了再发给你吧,呵呵~~~~~

MySql学习笔记

MySql概述:MySql是一个种关联数据库管理系统,所谓关联数据库就是将数据保存在不同的表中,而不是将所有数据放在一个大的仓库中。这样就增加了速度与提高了灵活性。并且MySql软件是一个开放源码软件。

注意,MySql所支持的TimeStamp的最大范围的问题,在32位机器上,支持的取值范围是年份最好不要超过2030年,然后如果在64位的机器上,年份可以达到2106年,而对于date、与datetime这两种类型,则没有关系,都可以表示到9999-12-31,所以这一点得注意下;还有,在安装MySql的时候,我们一般都选择Typical(典型安装)就可以了,当然,如果还有其它用途的话,那最好选择Complete(完全安装);在安装过程中,一般的还会让你进行服务器类型的选择,分别有三种服务器类型的选择,(Developer(开发机)、Server Machine(服务器)、Dedicated MySql Server Machine(专用MYSQL服务器)),选择哪种类型的服务器,只会对配置向导对内存等有影响,不然其它方面是没有什么影响的;所以,我们如果是开发者,选择开发机就可以啦;然后接下来,还会有数据库使用情况对话框的选择,我们只要按照默认就可以啦;

连接与断开服务器:
连接:在windows命令提示符下输入类似如下命令集:mysql –h host –u user –p
例如,我在用的时候输入的是:mysql –h localhost –u root –p
然后会提示要你输入用户密码,这个时候,如果你有密码的话,就输入密码敲回车,如果没有密码,直接敲回车,就可以进入到数据库客户端;连接远程主机上的mysql,可以用下面的命令:mysql –h 159.0.45.1 –u root –p 123

断开服务器:在进入客户端后,你可以直接输入quit然后回车就可以了;

下面就数据库相关命令进行相关说明
你可以输入以下命令对数据库表格或者数据库进行相关操作,在这里就省略了,然后直接进行文字说明了;

Select version(),current_date;//从服务器得到当前mysql的版本号与当前日期
Select user(); //得到当前数据库的所有用户
Use databasename; 进入到指定的数据库当中,然后就可以操作这个数据库当中的表格了
Show databases; //查询目前数据库中所有的数据库,并且显示出来;
Create batabase databasename;创建数据库,例如:create database manager;
Show tables; //查看当前数据库中的所有表格;
Create table tablename(colums);创建表,并且给表指定相关列,例如:create table pet(name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);

Describe tablename;将表当中的所有信息详细显示出来,例如:describe pet;
可以用命令一次插入多条记录,例如:
Insert into pet values(‘Puffball’,’Diane’,’hamster’,’f’,’1993-12-3’,null),( ‘Puffball’,’Diane’,’hamster’,’f’,’1993-12-3’,now());
Select * from pet; 从pet表当中查询出所有的记录,显示出来;
Delete from pet where id=1;删除ID为1的那一条记录;
Update pet set birth=’2001-1-3’ where name=’Bowser’;更新name为Bowser的记录当中的birth字段的值;
Select distinct owner from pet;从pet表中选择出owner字段的值唯一的行,如果有多行记录这个字段的值相同,则只显示最后一次出现这一值的一行记录;

有关日期计算:

Select name,birth,curdate(),(year(curdate())-year(birth)) as age from pet;
此处,year()函数用于提取对应字段的年份,当然类似的还有month(),day()等;

在mysql当中,sql语句可以使用like查询,可以用”_”配任何单个字符,用”%”配任意数目字符,并且SQL模式默认是忽略大小写,例如:select * from pet where name like ‘%fy’;
当然也可以用正则表达式模式进行配。

同时在sql当中,也要注意分组函数、排序函数、统计函数等相关用法,在这里只列举一二;
Select species,count(*) from pet group by speceis;
Select * from pet order by birth desc;

查询最大值的相关操作:
Select max(age) from pet;
取前多少项记录,这个主要用于分页查询操作当中,
Select * from pet order by birth desc limit 3;取前三条记录,
Select * from pet order by birth desc limit 0,3;这个可以用于分页查询,limit后面的第一个参数,是起始位置,第二个参数是取记录条数;

有关创建表格自增长字段的写法:
Create table person(id int(4) not null auto_increment,name char(20) not null,primary key (id));

修改表操作:
向表中增加字段:注意,在这个地方,如果是增加多个字段的时候,就要用括号括起来,不然会有问题,如果是单个字段的话,不用括号也没事;
Alter table test add(address varchar(50) not null default ‘xm’,email varchar(20) not null);

将表中某个字段的名字修改或者修改其对应的相关属性的时候,要用change对其进行操作;
Alter table test change email email varchar(20) not null default ‘zz’;//不修改字段名

Alter table test change email Email varchar(30) not null;//修改字段名称

删除表中字段:
Alter table test drop email;//删除单个字段
Alter table test drop address,drop email;//删除多列

可以用Drop来取消主键与外键等,例如:
Alter table test drop foreign key fk_symbol;
删除索引:
Drop index index_name on table_name;
例如:drop index t on test;
向表中插入记录:注意,当插入表中的记录并不是所有的字段的时候,应该要在前面列出字段名称才行,不然会报错;
Insert into test(name) values(‘ltx’);
Insert into test values(1,’ltx’);
也可以向表中同时插入多列值,如:
Insert into test(name) values(‘ltx’),(‘hhy’),(‘xf’);
删除表中记录:
Delete from test;//删除表中所有记录;
Delete from test where id=1;//删除表中特定条件下的记录;

当要从一个表或者多个表当中查询出一些字段然后把这些字段又要插入到另一个表当中的时候,可以用insert …..select语法;
Insert into testt(name) (select name from test where id=4);

从文件中读取行插入数据表中,可以用Load data infile语句;
Load data infile ‘test.txt’ into table test;

可以用Describe语法进行获取有关列的信息;
Describe test;//可以查看test表的所有信息,包括对应列字段的数据类型等;

MySql事务处理相关语法;

开始一项新的事务:start transaction或者begin transaction
提交事务:commit
事务回滚:rollback
set autocommit true|false 语句可以禁用或启用默认的autocommit模式,只可用于当前连接;
例子:

Start transaction;

Update person set name=’LJB’ where id=1;

Commit | rollback;

数据库管理语句
修改用户密码:以root用户为例,则可以写成下面的;mysql –u root –p 旧密码 –password 新密码

Mysql –u root –password 123;//将root用户的密码修改成123,由于root用户开始的时候,是没有密码的,所以-p旧密码就省略了;
例如修改一个有密码的用户密码:mysql –u ltx –p 123 –password 456;

增加一个用户test1,密码为abc,让他可以在任何时候主机上登陆,并对所有数据库有查询、插入、修改、删除的权限。
Grant select,insert,update,delete on *.* to test1@”%” identified by ‘abc’;
增加一个test2用户,密码为abc,让他只可以在localhost上登陆,并且可以对数据库进行查询、插入、修改、删除操作;
Grant select,insert,update,delete on mydb.* to test2@localhost identified by ‘abc’;
如果不想让用户test2有密码,可以再输入以下命令消掉密码:
Grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;

备份数据库常用命令:mysqldump –h host –u username –p dbname>保存路径与文件名
然后回车后,会让你输入用户密码,输入密码后,再回车就OK啦;
Mysqldump –hlocalhost –uroot –p test >E:\db\test.sql

这一命令具体解释下:
这个命令就是备份test数据库,并且将备份的内容存储为test.sql文件,并且保存在E:\db下面;
命令当中-p 前面的test是数据库名,然后在数据库名后面要跟上一个”>”,然后接下来,就是写要保存的位置与保存文件的文件名;

将备份好的数据库导入到数据库当中去:也就是运行.sql文件将数据库导入数据库当中去->
首先你得创建数据库,然后运行如下命令:mysql –hlocalhost –uroot –p linux<E:\db\test.sql然后回车,再输入密码就可以啦;
解释下上面的命令:linux是就要导入的数据库名字,然后后面要紧跟着“<”符号,然后后面就是要导入的数据库文件;

将数据库导出保存成XML文件、从XML文件导入数据到数据库:

导出表中数据:mysql –X –h hostName –u userName –p Pwd –e “use DatabaseName;sql;” >xml文件名
或者用另外一种方式也行:mysqldump –xml –h hostName –u userName –p pwd dbName tableName //这一种只用于显示在当前的mysql客户端,不保存到文件当中;
相关说明:-X代表的是文件的格式是XML,然后-e一写不能掉,还有就是要用双引号将要操作的语句括起来;单引号不行;
例如:mysql –X –hlocalhost –uroot –p –e “use test;select * from pet;”>E:\db\out.xml
从XML文件导入数据到数据库:
Insert into tableName values(1,load_file(‘filepath’));
例如:insert into pet values(1,load_file(“E:\db\out.xml”));

查看数据库状态与查询进程:

Show status;//查看状态
Show processlist;//查看进程

更改用户名,用以下命令:
Update set user=”新名字” where user=”旧用户名”;

给数据库用户设置管理员权限:
Mysqladmin –h host –u username –p pwd;
以root用户为例;
Mysqladmin –h localhost –u root –p 123;

存储过程与函数

存储程序和函数分别是用create procedure和create function语句,一个程序要么是一个程序要么是一个函数,使用call语句来调用程序,并且程序只能用输出变量传回值;
要想在MySql5.1中创建子程序,必须具有create routine权限,并且alter routine和execute权限被自动授予它的创建者;

创建存储过程:
首先声明分隔符,所谓分隔符是指你通知mysql客户端你已经输入一个sql语句的字符或字符串符号,在这里我们就以“//”为分隔符;

Delimiter 分隔符\
如:delimiter //
再创建存储过程:
Create procedure 存储过程名 ( )
声明存储过程开始:
begin
然后开始写存储过程体:
Select * from pet;
结束存储过程:
End;//
刚刚的例子全部写出来,完整的代码就是:
Delimiter //
Create procedure spt () //注意,这个地方,存储过程名与括号之间要有个空格
Begin
Select * from pet;
End;//到这里,整个存储过程就算写完啦

执行存储过程:
Call 存储过程名 ();//
如,我们执行刚刚创建的存储过程,就是:
Call spt ();//

需要说明的是存储过程名后面一定要加个空格,而后面那个括号,则是用于传送参数的参数列表;另外,我们创建存储过程完成后,也只是创建了,但是只有调用call 存储过程名 ();//后才算执行完毕,才能看到存储过程的结果;

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela

mysql 多表(自连接后的单表)左连接如何建立视图: CREATE VIEW mydb.view1 AS
SELECT * FROM taba a,tabb b WHERE a.name=b.id
或者
CREATE VIEW mydb.view2 AS select * from
(SELECT * FROM taba a,tabb b WHERE a.name=b.id) a

另外最好不要用*,把字段都列出来

mysql 删除表字段是如何删除字段下面关联的外键: 创建一个表: create table users( username varchar(15) not null Primary Key, userpass varchar(15) not null ); 插入一条记录: insert into users values('user1','pass1'); 再创建一个表: create table roles( username varchar(15) not null references users(username), rolename varchar(15) ); 再插入一条记录: insert into roles values('dd','ddd');

  • 20的因数的因数有哪些

    当今世界上最有名的十五位名人: 1、马云2、金日成3、屠呦呦4、奥巴马5、成吉思汗6、史泰龙7、韩寒8、邓超9、普京10、贝克汉姆11、范冰冰12、成龙马云,男,1964年9月10日生于浙江省杭州市,祖籍浙江省嵊州市(原嵊县)谷来镇,阿里巴巴集团主...

    981条评论 5955人喜欢 6244次阅读 815人点赞
  • 2017年第几个环境日

    微信猜十五位名人: 1) 马云2) 金日成3) 成吉思汗4) 屠哟哟5) 奥巴马6) 贝克汉姆7) 史泰龙8) 韩寒9) 邓超10) 普京11) 权振东12) 朱镕基13) 花木兰14) 岳飞15) 朱元璋 ...

    224条评论 4365人喜欢 4566次阅读 997人点赞
  • ftp怎么上

    用头像猜十五位名人: 1?☁2?☀?3??4⃣?4???5?8⃣?6????7?☀?8❄❄9??10??11? ? ⭕12 ? ⛄ ? ? 13 ? ? ? 14 ? ?15 ? ⭕ ?答案:1马云2金日成3成吉思汗4屠呦呦5奥...

    381条评论 6499人喜欢 3186次阅读 572人点赞
  • 108颗佛珠怎么穿

    十五从军征的作者是哪个朝代哪位名人的诗: 《十五从军征》选自郭茂倩编辑的《乐府诗集》,原诗作者已不可考。原诗:  十五从军征,八十始得归。   道逢乡里人,家中有阿谁? 遥望是君家,松柏冢累累。  兔从狗窦入,雉从梁上飞,   中庭生旅谷,井上...

    577条评论 3567人喜欢 2972次阅读 203人点赞
  • 1060配什么电源

    济南大明湖公园里名士轩里,十五位名人石刻画像画的都是谁: 山东:中国导游十万个什么 这本书里写的很详细。 ...

    693条评论 2614人喜欢 5564次阅读 367人点赞
  • dyson为什么贵

    十五位的名人故事: 名人小故事 有次,苏格拉底在街上行走,有人用棍子打他的背,痛得他无法站立而蹲下去,但很快的,他又若无其事的站起来。目睹整个经过的旁人,看见他没有任何的反应,好奇的问他:你挨打,为什么不还手?苏格拉底微笑地回答:当一只...

    597条评论 4096人喜欢 5713次阅读 585人点赞