DDL(Data Definition Language):数据定义语言,用来定义数据库对象(数据库,表,字段)。
show databases;
select database();
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ];
/*例:创建一个study数据库,并且指定字符集*/
create database if not exists study default charset utf8mb4;
drop database [ if exists ] 数据库名;
use 数据库名 ;
show tables;
desc 表名;
通过这条指令,我们可以查看到指定表的字段(Field)、字段的类型(Type)、是否可以为空(Null)、是否存在默认值(Default)等信息。
show create table 表名;
通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询到,因为这部分是数据库的默认值,如:存储引擎、字符集等。
create table 表名(
字段1 字段1类型 [ comment 字段1注释 ],
字段2 字段2类型 [ comment 字段2注释 ],
字段3 字段3类型 [ comment 字段3注释 ],
......
字段n 字段n类型 [comment 字段n注释 ]
) [ comment 表注释 ];
| 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
|---|---|---|---|---|
| TINYINT | 1byte | (-128,127) | (0,255) | 小整数值 |
| SMALLINT | 2bytes | (-32768,32767) | (0,65535) | 大整数值 |
| MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
| INT/INTEGER | 4bytes | (-2147483648, 2147483647) | (0,4294967295) | 大整数值 |
| BIGINT | 8bytes | (-263,263-1) | (0,2^64-1) | 极大整数值 |
| FLOAT | 4bytes | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和 (1.175494351 E- 38,3.402823466 E+38) | 单精度浮点数值 |
| DOUBLE | 8bytes | (-1.7976931348623157 E+308, 1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308) | 双精度浮点数值 |
| DECIMAL | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) | |
| 例: |
/*年龄字段:不会出现负数,而且人的年龄不会太大。*/
age tinyint unsigned
/*分数:总分100分,最多出现一位小数。*/
score double(4,1)
| 类型 | 大小 | 描述 |
|---|---|---|
| CHAR | 0-255 bytes | 定长字符串(需要指定长度) |
| VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度) |
| TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
| TEXT | 0-65 535 bytes | 长文本数据 |
| MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
| MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
| LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
| LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。
例:
# 用户名 username ------> 长度不定, 最长不会超过50
username varchar(50)
# 性别 gender ---------> 存储值, 不是男,就是女
gender char(1)
# 手机号 phone --------> 固定长度为11
phone char(11)
| 类型 | 大 小 | 范围 | 格式 | 描述 |
|---|---|---|---|---|
| DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
| TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续 时间 |
| YEAR | 1 | 1901 至 2155 | YYYY | 年份值 |
| DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时 间值 |
| TIMESTAMP | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时 间值,时间戳 |
如:
/*生日字段*/
birthday date
/*创建时间*/
createtime datetime
设计一张员工信息表,要求如下:
create table emp
(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
entrydate date comment '入职时间'
) comment '员工表';
alter table 表名 add 字段名 类型(长度) [ comment 注释 ] [ 约束 ] ;
alter table 表名 modify 字段名 新数据类型(长度) ;
alter table 表名 change 旧字段名 新字段名 类型(长度) [ comment 注释 ] [ 约束 ];
alter table 表名 drop 字段名;
alter table 表名 rename to 新表名;
drop table [ if exists ] 表名;
可选项 if exists 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)
truncate table 表名;
注意:在删除表的时候,表中的全部数据也都会被删除。
使用StarUml画ER图,生成SQL建表代码,解决常见报错遇到稍微复杂一些的业务,先整理需求在下手会使得开发过程中头发少掉一些,尤其是团队合作的项目效果尤为明显,在整理完业务需求后,从数据库开始下手能让后端的头发掉少一些.找个好的软件能在整理数据库的时候再少掉点头发,并且减轻简单重复的打字工作.如果图画好了,数据库建表的语句能自动打出来就好了.诶,还真有软件可以做到,而且还容易使用,这实属是懒人福音,头发的救星啊.快速开始在这里假设您了解什么是ER图以及一些相关的知识,本文将会在两分钟内结合图片介绍StarUml画ER图的方法.点击链接下载安装StarUml.有点可惜的是这个软件是收费的,而
我希望从SQL(Postgres)DDL自动生成数据库模式的XML版本。是否有任何工具可以帮助从DDL转换为XML?xml2ddl声称这样做,但它无法连接并且自2005年以来似乎不受支持。 最佳答案 您可以使用内置的table_to_xmlschema等;见http://www.postgresql.org/docs/current/static/functions-xml.html#FUNCTIONS-XML-MAPPING. 关于sql-是否有将数据库模式(SQLDDL)转储为XML
在我开始之前这里是问题所在。应该是这样的:BjörnNilsson,而不是它显示奇怪的特殊字符,所有具有字符Å、Ä和Ö的值都变成这样。我用具有所有值的XML格式的API值填充我的DDL,我们还为此使用了Linq2Rest。这个过程是这样的privatereadonlyRestContextrestContext;publicConsultantContext(Uriuri,Formatformat){restContext=newRestContext(GetRestClient(uri,format),GetSerializerFactory(format));}publicenum
✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步!📃个人主页:@每天都要敲代码的个人主页🔥系列专栏:MySQL专栏目录一:union的使用二:limit及通用分页SQL(重要)三:表结构(DDL)1.创建表(creat)2.修改表(alter)3.删除表(drop)四:处理表中数据(DML)1.插入表中的数据insert2. 修改表中的数据update3. 删除表中的数据delete&truncate五:约束1. 非空约束notnull2.唯一约束unique3. 主键约束primarykey 4. 外键约束 foreignkey一:union的使用union:可以将查询结果
这个问题在这里已经有了答案:PHPWarning:PHPStartup:Unabletoloaddynamiclibrary(20个答案)关闭6年前。请问我该如何解决这个问题?我在OSX10.11.3上运行php5.6PHPWarning:PHPStartup:Unabletoloaddynamiclibrary'/usr/lib/php/extensions/no-debug-non-zts-20121212/php_intl.dll'-dlopen(/usr/lib/php/extensions/no-debug-non-zts-20121212/php_intl.dll,9):i
我需要从PHP更新用户密码,这是通过ALTERUSER语句完成的。我不能使用准备好的语句,因为它们不支持DDL命令。可以轻松清理用户名字段,确保它与字母数字正则表达式匹配,但我想不出一种安全的方式来清理密码。我应该怎么做?我知道情况不理想,但我不在这里做主。我只是尽量保证它的安全。编辑:这是我正在尝试运行的示例ALTERUSERmyusernameIDENTIFIEDBYmynewpassword1这在SQLDeveloper中成功运行,我可以通过串联使其工作,但我希望避免这种情况。 最佳答案 将输入传递给PL/SQLblock绑定
在我正在处理的Java项目中,我为我们的单元测试设置了以下设置:我正在使用SpringTestMVC、@RunWith(SpringJUnit4ClassRunner.class)和@WebAppConfiguration来运行单元测试,并且我创建了一个MockMvc使用webAppContextSetup(webApplicationContext)测试应用程序的实例。我有一个Hibernate配置来设置内存中的HSQLDB,所有表都是基于@Entity类创建的。在Hibernate配置中,我正在设置hibernate.hbm2ddl.import_files属性以使用SQL语句加载
为了启动一个ant脚本,我使用java.lang.Runtime类的exec方法,如下所示:Processprocess=Runtime.getRuntime().Exec(JAVA_HOMEANT_HOME-jar/lib/ant-launcher.jar-BuildFilefile.xml);这个方法,尽管看起来很简单,但是它带来了几个问题,在javadoc中描述如下:BecauseSomenativeplatformsProvideonlylimitedbuffersizeforstandardinputandoutputstreams,failuretopromptlywrit
如何仅使用Java和注释在Spring中设置以下内容。我是这应该是可能的,我相信让项目xml自由会更干净。PS:这应该不重要,但我在Heroku上运行它。 最佳答案 将其添加到dataSource()所在的类中,它解决了我的问题。finalPropertieshibernateProperties(){finalPropertieshibernateProperties=newProperties();hibernateProperties.setProperty("hibernate.hbm2ddl.auto","update")
我在通过JDBC使用PostgreSQL时遇到了一个有趣的问题(无法在JDBC之外重现),我得到了一个“ERROR:cachedplanmustnotchangeresulttype”重现此问题的最简单方法是使用以下代码:Connectionc=getConnection();c.setAutoCommit(true);Liststatements=Arrays.asList("createtablet(aint)","select*fromt","altertabletaddbint","select*fromt","altertabletaddcint","select*fromt